0

从性能的角度来看,哪个函数定义更好/更快?制作一个对象并为其添加功能,还是一个一个地制作功能?

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);
4

1 回答 1

2

后者。性能影响可以忽略不计,除非是大规模的,但第二个会稍微快一些。

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

第二种方法在确定正确的功能时,从本质上来说是省去了中间人。现在,每一个都将在不到一毫秒的时间内找到。就你而言,它是即时的。但是如果你连续做 10 万次呢?是的,通过在类中声明,您可能会看到一些性能提升。

作为附加说明,您还将另一个对象与第一个对象一起添加到内存中。添加足够多的这些(再次,需要大规模),你会看到存储在内存中的多余对象会减慢

不过,您还应该关注可用性和可读性。在对象中声明意味着一旦类被实例化,函数就不可用,因此您必须小心不要在实例化对象之前调用函数。此外,您将失去代码提示,并且这不是编写代码的常用方式(这意味着另一个开发人员,甚至一年后的您自己,将不得不在没有任何提示或标准帮助的情况下弄清楚它是如何工作的他们在进行任何修改之前已经学会了)

于 2013-03-22T23:44:29.390 回答