2016-04-13 5 views
0

Was ist besser?AS3 - Ist die Menge an Code in einem Objekt für mehrere Instanzen wichtig?

1000 Objekte mit 500 Zeilen Code jeweils

vs

1000 Objekte mit 30 Zeilen Code jedem, dass Delegaten einen Manager mit 500 Zeilen Code.


Kontext:

I-Signale in meinem Spiel haben. Dutzende von ihnen. Ich mag, dass sie eine bessere Leistung als das native Flash-Ereignis haben.

Ich dachte, dass, wie ich so viele haben sollte, sie leicht sein sollten, so dass jedes Signal nur ein paar Variablen und drei Methoden speichert.

Variablen: Kopf, Schwanz, isStepping, hasColdNodes, signalMgr

Methoden: addListener, removeListener, Versand


Aber alle diese Signale Delegierten die heavywork zum signalMgr, wie in:

signalMgr.addListener (this, listener, removeOnFirstCallback);

Dieser Manager behandelt alle doppelt verknüpften Liste Zeug und hat viel mehr Code als ein Signal.

Also, ist es richtig, so zu denken? Ich denke, wenn ich den gesamten Management-Code im Signal hätte, würde das jedesmal im Speicher wiederholt werden, wenn ich einen anspreche.

+0

"Besser" in welcher Weise? – Aaron

+0

Leistungsmäßig. – Speck

+0

Warum signalMgr überall haben, lass es Singletone sein –

Antwort

0

Wir sollten über kleine Wirkungsgrade, etwa 97% der Zeit vergessen: vorzeitige Optimierung ist die Wurzel allen Übels. (c) DonaldKnuth

Das ultimative Ziel jedes Programmierers ist, sauberen Code zu schreiben. Du solltest also sauberen Code schreiben mit nur ein paar Gedanken an Optimierungen.

+0

Das klingt gut. Es wäre immer noch schön zu wissen, wie der Code verwaltet wird, so dass ich in Zukunft, wenn ich Tausende von Objekten erstellen muss, diese Technik verwenden kann. – Speck

+0

Nun, es gibt viele Muster und gute Praktiken. Bevor Sie ein eigenes Projekt erstellen, sollten Sie viele plattformspezifische Kenntnisse haben. –

1

Im Zusammenhang mit Ihrer Frage ist dies ziemlich irrelevant und beide Fälle sollten keinen großen Unterschied machen.

Von dem, was Sie sagen, es scheint, dass Sie viele Dinge annehmen, aber tatsächlich nicht überprüft haben. Zum Beispiel, wenn Sie sagen: "Ich mag, dass sie eine bessere Leistung als das native Flash-Ereignis haben." Ich kann nur annehmen, dass du das irgendwo gelesen hast, aber versuche es nie selbst zu verifizieren. Es gibt nur wenige Fälle, in denen die Verwendung des Signalsystems einen kleinen Unterschied machen kann, in den meisten Fällen bringen sie nicht viel, in einigen Fällen verschlimmern sie die Situation. Im Kontext der Flash-Entwicklung bringen Signale nicht mehr als einfachen Komfort. Flash ist ein ereignisgesteuertes System, das nicht ausgeschaltet werden kann, also Signale mit ihm verwenden bedeutet, dass Ereignis + Signale verwendet werden und nicht nur Signale verwendet werden. Im Fall von benutzerdefinierten Ereignissen ist die Verwendung der Delegierung viel effizienter und einfacher zu verwenden und erfordert keine Objekterstellung.

Aber die wirkliche Antwort auf die Frage ist noch einfacher: Es hat keinen Sinn, etwas zu optimieren, von dem Sie nicht wissen, dass es optimiert werden muss. Noch schlimmer wird das unterschiedliche Betriebssystem zu unterschiedlichen Optimierungsanforderungen führen, so dass jeder, der versucht, eine allgemeine Optimierungsfrage zu beantworten, nur scheitern oder so tun kann, als wüsste er es.

Verwandte Themen