As3 swf字节码注入

发布于 2024-10-09 05:16:11 字数 453 浏览 6 评论 0原文

我目前正在开发一个工具,可以让我们查看大型 as3/Air 项目(超过 2000 个类)中哪些函数耗时,以识别瓶颈和需要优化的函数。

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

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

一些as3库存在做这样的事情(AS3Commons ByteCode),但没有' t 在我的项目中工作得很好(我得到解析错误)并且 as3 很慢。

I'm currently work on a tool that allow us to view wich function are time consuming in a big as3/Air project (more than 2000 class) to identify bottleneck and functions that need optimisations.

One way to achieve this is to use Flash Builder Profiler but it's very very slow and it crashs after 1 or 2 minutes.
The other way is to manualy write a file with most important function time consuming informations.
But it's a manual process and I can't cover all project's functions.

So I'm looking for a way to inject as3 bytecode directly in the compiled swf. With such tool, I will inject a log after each function call and so I will be able to cover all project's function.

Some as3 libs exists to do such thing (AS3Commons ByteCode) but doesn't works fine with my project (I get parsing error) and as3 is slow.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仙气飘飘 2024-10-16 05:16:11

我看到四个选项:

  • 首先,我想到的是 Apparat,作者:Joa Ebert (谢谢,老兄),它提供了 ABC 字节码优化的工具,以及用于操作该字节码的非常深入的 API。它是用 Scala 编写的,因此现在也是学习这种很棒的语言的好时机。

  • 此外,您可以编写自己的工具。 ABC(ActionScript 字节码)格式有详细记录< /a> 及其容器,SWF 文件格式。解析这两个文件以获取有趣的标签并在字节码中添加所需的指令可能并不难。

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

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

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

I see four options :

  • First, I'm thinking of Apparat, by Joa Ebert (thanks, dude), which provides tools for ABC bytecode optimization, as well as a very deep API for the manipulation of this bytecode. It is written in Scala, so it's also a good moment to learn about this awesome language.

  • Also, you could write your own tool. The ABC (ActionScript Bytecode) format is well documented, as well as its container, the SWF file format. It might be not too hard to parse both files for interesting tags and add needed instructions in the bytecode.

  • On a more "simple" approach, the SWF and ABC compiler most of us are using, mxmlc, is open-source. You could try to edit the compiler code directly to do what you want. Everything you need for that is in the Adobe OpenSource Flex SDK web site.

  • And as an alternative answer to your question, instead of trying to inject bytecode in the SWF (which will always have an impact on the performances of the global application), you could use the awesome AS3Trace/AS3DynamicProfile options on mm.cfg, to have a full log of execution of each function, as well as profiling informations about the opcodes execution. More on that here.

To conclude, such external profiling tool will be an awesome application to be open-sourced and released to the community, since more and more "big" AS3 projects are coming out these days. ;)

过度放纵 2024-10-16 05:16:11

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

Finaly, I used a python script to add As3 to each action script files.
My work can be found here : http://code.google.com/p/as3-performances-analyzer/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文