As3 swf字节码注入

时间:2010-12-22 09:29:38

标签: actionscript-3 flash bytecode code-injection

我目前正在研究一种工具,它允许我们在大型as3 / Air项目(超过2000级)中查看功能耗时,以识别需要优化的瓶颈和功能。

实现此目的的一种方法是使用Flash Builder Profiler但它非常慢并且在1或2分钟后崩溃。 另一种方法是手动编写具有最重要的功能耗时信息的文件。 但这是一个手动过程,我无法涵盖所有​​项目的功能。

所以我正在寻找一种在编译的swf中直接注入as3字节码的方法。使用这样的工具,我将在每次函数调用后注入一个日志,因此我将能够涵盖所有项目的功能。

有些as3库存在做这样的事情(AS3Commons ByteCode)但是对我的项目不起作用(我得到解析错误)而且as3很慢。

2 个答案:

答案 0 :(得分:10)

我看到四个选项:

  • 首先,我正在考虑由Joa Ebert(感谢,老兄)提供的Apparat,它提供了ABC字节码优化的工具,以及用于操作此字节码的非常深的API。它是用Scala编写的,所以这也是了解这种令人敬畏的语言的好时机。

  • 此外,您可以编写自己的工具。 ABC(ActionScript字节码)格式为well documented,以及其容器SWF file format。解析有趣标签的两个文件并在字节码中添加所需的指令可能并不难。

  • 在一个更“简单”的方法中,我们大多数人使用的SWF和ABC编译器mxmlc是开源的。您可以尝试直接编辑编译器代码以执行您想要的操作。您需要的一切都在Adobe OpenSource Flex SDK web site

  • 作为您问题的替代答案,您可以使用非常棒的AS3Trace / AS3DynamicProfile选项,而不是尝试在SWF中注入字节码(这将始终对全局应用程序的性能产生影响)。 mm.cfg,具有每个函数的完整执行日志,以及有关操作码执行的分析信息。更多关于here

总而言之,这样的外部分析工具将是一个开源和发布到社区的一个很棒的应用程序,因为现在越来越多的“大”AS3项目正在出现。 ;)

答案 1 :(得分:4)

最后,我使用python脚本将As3添加到每个动作脚本文件中。 我的工作可以在这里找到:http://code.google.com/p/as3-performances-analyzer/