为什么Adobe Alchemy Tool比flex编译器创建更快的运行flash字节代码?

时间:2009-12-08 21:28:45

标签: flex flash flex3 adobe alchemy

我已经看过一些关于此的博客文章,并与我的队友进行了一两次讨论,但我想看看堆栈溢出社区的想法。

那么为什么Adobe Alchemy Tool创建的flash字节代码比flex编译器快得多?

此外,flex编译器什么时候能够获得类似的性能提升?

是否需要程序员特定使用特殊阵列或类似的东西才能获得相同的性能?

2 个答案:

答案 0 :(得分:6)

Alchemy是ActionScript中LLVM的实现。简而言之,它是一个使用ByteArray作为内存存储的虚拟机。

Alchemy编译的C代码可以直接访问“内存”(通过Flash 10中引入的一些操作码),允许它在闲暇时(包括指向对象的指针)对内存进行分块。这导致一些,但绝不是全部,代码运行得更快。某些类型的代码实际上在Alchemy中运行较慢,因为它是在AVM(另一个VM)上运行的VM。

此外,Alchemy没有对ActionScript类的本机访问权限,必须通过互操作类访问它们。

答案 1 :(得分:3)

炼金术工具创建的代码使用flash播放器中的常规编译器无法使用的指令(并且说话是这些指令特别针对炼金术而公开)。

有希望,常规编译器最终是否会获得类似的收益。已经多次证明编译器创建了不合标准的代码,并且有几个项目可以优化生成的代码。这些可能会让Adobe感到羞耻。

机会是,不,程序员不需要做任何特殊的事情来获得这些性能提升(虽然查看优化博客,以特定方式编写循环意味着可以更好地优化它们。)