内联的优点是什么?

时间:2015-10-09 00:08:29

标签: actionscript-3 inline

我在阅读有关如何使用ASC 2.0编译器时使用内联元数据的内容时。

但是,我无法找到任何信息来源,解释为什么我应该使用它们。

任何人都知道?。

2 个答案:

答案 0 :(得分:2)

函数会在任何编程语言中引发开销。每个ActionScript,当函数执行开始时,会创建许多对象和属性。

首先,创建一个激活对象,它存储在函数体中声明的参数和局部变量。这是一种无法直接访问的内部机制。

其次,创建范围链,其中包含Flash平台检查标识符声明的有序对象列表。每个执行的函数都有一个存储在内部属性中的作用域链。

函数闭包维护函数及其词汇环境的快照。

移动代码内联减少了这些对象的创建,以及如何在堆栈上维护引用。每闪存,你可能会看到4倍的性能提升。

当然,有一些权衡 - 没有inline关键字会导致代码复杂性;同样,内联代码增加了字节码的数量。除了更大的应用程序,虚拟机还会花费额外的时间来验证和JIT编译。

答案 1 :(得分:1)

为了简化,内联是某种代码的复制/粘贴。由于方法调用很昂贵且成本执行时间很长,因此每次在代码中存在方法调用时,使用内联关键字都会复制/粘贴方法体,因此方法调用将替换为方法体。由于这是在编译时完成的,理论上会增加所得应用程序的大小(如果内联方法被调用10次,其身体将被复制并粘贴10次),但由于所有调用都将被替换,因此您将获得速度执行。当然,这仅适用于要求执行的代码,例如在每个帧上运行的循环。