将较小的对象传递给函数以提高性能

时间:2018-04-17 14:52:45

标签: javascript performance

技术背景:

阅读this page,了解JavaScript如何通过共享函数来传递对象。 现在我知道被调用函数中的对象与第一个局外人范围内的对象相同,除非它被直接赋值给。

这就是我用文字表达的方式。但是the page中的示例代码更好更简单。

我的问题如下:

因为我试图改进我的计算方法,所以我有一个非常基本的问题。传递一个较小的派生对象(让我们说只有重要键的子字典)到一个只读(不分配)的函数对于性能(运行时间)更好吗?

为简单起见,这里是示例

function func(){
     var bigobj = {a:1, b:2, c:3, d:4}; 
     otherFunc(bigobj.a);  // will we gain some time against calling otherFunc(bigobj);  ??
     function otherFunc(obj){
         //obj is a smaller representation of bigobj
         //obj will not be assigned to here
    }
}

1 个答案:

答案 0 :(得分:3)

不,因为对象是JavaScript中的引用。在这种情况下,唯一必须传递给函数的是与对象大小无关的引用。

如果您传递值(字符串,数字等等),则每次进行函数调用时都会复制该值,这会产生一些额外的性能成本。但是,除非您正在使用大量值,否则这不太可能导致重大性能损失。