在AS3中定义函数哪种方式更好?

时间:2013-03-22 23:30:57

标签: actionscript-3 function variables

从性能的角度来看,哪个功能定义更好/更快?制作一个对象并向其添加功能,或逐个创建功能?

var myCollection:Object = {
    first: function(variable:int):void {

    },
    second: function(variable:int):void {

    }
}

myCollection.first(1);

private function first(variable:int):void {

}

private function second(variable:int):void {

}

first(1);

1 个答案:

答案 0 :(得分:2)

后者。除了大规模之外,性能损失可以忽略不计,但第二次会稍快一些。

基本上归结为范围。要从对象获取函数,您必须在类的范围内找到对象的内存引用,然后在对象范围内找到对该函数的内存引用。使用第二个,您只需要在类的范围内找到Function对象(所有函数都是对象)的内存引用。

第二种方法在确定正确的功能时切断了中间人。现在,每个人都会在不到一毫秒的时间内找到。就你而言,它是即时的。但如果你连续做了100k次呢?是的,通过在课堂上宣布,你可能会看到一点性能提升。

作为补充说明,您还将使用第一个对象向内存添加另一个对象。添加足够的这些(再次,需要在大规模规模),你会看到从存储在内存中的多余对象减速

但是,您还应该考虑可用性和可读性。在对象中声明意味着在实例化类之后函数不可用,因此您必须小心在实例化对象之前不调用该函数。另外,你会丢失代码提示,这不是编写代码的常用方法(意思是另一个开发人员,或者即使是你自己一年后,也不得不在没有任何帮助的情况下从一个黑客或标准中弄清楚它是如何工作的他们在做任何修改之前已经学会了)