我是 Actionscript (v3) 的新手,虽然已经有 20 年 C++ 经验,但我只是想了解一下我正在阅读的一些性能警告。
我查看了这个网站:
http://www.nbilyk.com/optimizing-actionscript-3
并且被“代码”部分吓死了,它说 Actionscript 在尝试在包中查找静态方法时必须进行动态查找。关键是,将 util 类型函数(通常是数学函数)作为静态函数放在自己的包中效率很低,因为每次调用它时都必须动态查找 namespace 和方法。
这是真的吗?它来自 C++,这完全不是我所期望的,它确实改变了我构建代码和库的方式。我想知道是否拥有一个 new() 一次的单例 util 库(包含作为普通公共(public)方法的方法)比将它们静态地放在另一个包中更好。
还有其他类似的明显问题吗?
干杯,
谢恩
最佳答案
是的,这是真的。从类外部调用静态函数很慢。我最近自己对此进行了测试,超过 10,000 次迭代,静态为 220 毫秒,而在实例上调用该函数为 160 毫秒。
其他提示是避免使用 Adobe 编译器。我最近开始使用 Haxe,它转换为 LLVM,然后转换为 ABC 代码(actionscript 字节代码)。 Haxe 利用了一些隐藏的操作码来处理内存(与 Alchemy 相同)。
说到炼金术,它将编译 C++ --> LLVM --> ABC。如果您有很多 C++ 库,可能对您有用。 (有人通过这种方式将 Doom、Hexen 和 Heritic 移植到 Flash)
编辑:对于任何与性能相关的事情http://lab.polygonal.de/和 http://blog.joa-ebert.com都是很好的起点。
关于actionscript-3 - Flash优化困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2046081/