我目前正在开发一种工具,该工具允许我们查看大型 as3/Air 项目(超过 2000 个类)中耗时的功能,以确定需要优化的瓶颈和功能。

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

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

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

最佳答案

我看到四个选项:

  • 首先,我想到了 Apparat ,作者是 Joa Ebert(谢谢,老兄),它提供了用于 ABC 字节码优化的工具,以及用于操作该字节码的非常深入的 API。它是用 Scala 编写的,所以现在也是学习这种很棒的语言的好时机。
  • 此外,您可以编写自己的工具。 ABC(ActionScript Bytecode)格式是 well documented ,以及它的容器 SWF file format 。为有趣的标签解析两个文件并在字节码中添加所需的指令可能并不难。
  • 在更“简单”的方法中,我们大多数人使用的 SWF 和 ABC 编译器 mxmlc 是开源的。您可以尝试直接编辑编译器代码以执行您想要的操作。您需要的一切都在 Adobe OpenSource Flex SDK web site 中。
  • 作为您问题的替代答案,您可以在 mm.cfg 上使用令人敬畏的 AS3Trace/AS3DynamicProfile 选项,而不是尝试在 SWF 中注入(inject)字节码(这将始终对全局应用程序的性能产生影响)有每个函数执行的完整日志,以及关于操作码执行的分析信息。更多关于 here

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

    关于actionscript-3 - As3 swf 字节码注入(inject),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4507786/

    10-11 15:15