2010-12-22 99 views
3

我目前正在研究一个工具,该工具允许我们在一个大的as3/Air项目(超过2000个类)中查看这个功能是否耗费时间来识别需要优化的瓶颈和功能。As3 swf字节码注入

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

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

一些as3库存在做这样的事情(AS3Commons ByteCode),但不能正常工作与我的项目(我得到解析错误)和as3是缓慢的。

回答

10

我看到四个选项:

  • 首先,我想的Apparat,通过JOA艾伯特(谢谢,伙计),其中提供的工具ABC字节代码优化,以及作为一个非常深刻的API这个字节码的操作。它是用Scala编写的,所以这也是学习这种令人敬畏的语言的好时机。

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

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

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

总之,这样的外部分析工具将是一个真棒应用程序是开源的,向社会发布,因为越来越多的“大” AS3项目来了这些天。 ;)

+0

此外这种方法:http://stackoverflow.com/questions/357825/flash-actionscript-cpu-profiler – 2010-12-22 15:18:23