2010-12-22 10 views
3

Ich arbeite derzeit an einem Tool, mit dem wir in einem großen as3/Air-Projekt (mehr als 2000 Klasse) zeitaufwändig feststellen können, welche Engpässe und Funktionen Optimierungen benötigen.As3 swf bytecode injection

Eine Möglichkeit, dies zu erreichen, ist die Verwendung von Flash Builder Profiler, aber es ist sehr, sehr langsam und es stürzt nach 1 oder 2 Minuten ab. Die andere Möglichkeit besteht darin, manuell eine Datei mit den wichtigsten zeitaufwendigen Informationen zu schreiben. Aber es ist ein manueller Prozess und ich kann nicht alle Projektfunktionen abdecken.

Also ich bin auf der Suche nach einer Möglichkeit, as3 Bytecode direkt in der kompilierten swf injizieren. Mit diesem Tool werde ich nach jedem Funktionsaufruf ein Protokoll einfügen, so dass ich alle Projektfunktionen abdecken kann.

Einige As3-Bibliotheken existieren, um so etwas zu tun (AS3Commons ByteCode), aber funktioniert nicht gut mit meinem Projekt (ich bekomme Parsing-Fehler) und as3 ist langsam.

Antwort

10

Ich sehe vier Optionen:

  • Zuerst denke ich an Apparat, von Joa Ebert (danke, Geck), die Werkzeuge für die ABC-Bytecode-Optimierung für sowie eine sehr tiefe API die Manipulation dieses Bytecodes. Es ist in Scala geschrieben, also ist es auch ein guter Moment um etwas über diese großartige Sprache zu lernen.

  • Sie könnten auch Ihr eigenes Werkzeug schreiben. Das ABC-Format (ActionScript Bytecode) ist well documented sowie sein Container SWF file format. Es ist vielleicht nicht schwer, beide Dateien nach interessanten Tags zu analysieren und benötigte Anweisungen im Bytecode hinzuzufügen.

  • Bei einem "einfacheren" Ansatz ist der SWF- und ABC-Compiler, den die meisten von uns verwenden, mxmlc, Open-Source. Sie könnten versuchen, den Compiler-Code direkt zu bearbeiten, um das zu tun, was Sie wollen. Alles, was Sie dafür brauchen, ist in der Adobe OpenSource Flex SDK web site.

  • Und als alternative Antwort auf Ihre Frage, anstatt zu versuchen, Bytecode in die SWF zu injizieren (was immer einen Einfluss auf die Leistung der globalen Anwendung haben wird), könnten Sie die fantastischen AS3Trace/AS3DynamicProfile Optionen auf mm verwenden .cfg, um ein vollständiges Protokoll der Ausführung jeder Funktion sowie Informationen über die Ausführung der Opcodes zu erhalten. Mehr dazu here.

Zum Schluss wird derartiges externes Profilierungswerkzeug eine wunderbare Anwendung sein Open-Source und die Gemeinschaft freigegeben, da mehr und mehr „große“ AS3 Projekte in diese Tage herauskommen. ;)

+0

Auch dieser Ansatz: http://stackoverflow.com/questions/357825/flash-actionscript-cpu-profiler –