gpt4 book ai didi

javascript - 为什么调用嵌套在函数对象中的函数比...更快?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:18 28 4
gpt4 key购买 nike

我想知道在计算上调用嵌套在对象中的函数的最快方法是什么,所以我做了一个快速的 jsPerf.com 基准测试,其中我考虑了三种可能性——从数组中调用函数,从“核心”中调用函数对象和函数对象:

var array = [1, 1, function(number) { return number; }];

var funcObj = function() {
this.one = 1;
this.two = 2;
this.three = function(number) { return number; };
}
var someFunc = new funcObj();

var obj = {
one: 1,
two: 1,
three: function(number) { return number; }
}

事情是这样的:

现在,问题是:为什么会有这么大的差异?

编辑:链接到基准:>> link <<

最佳答案

性能因实现而异,但以下是一些可能解释差异的见解:

首先,您在这里测量的不是函数调用。您正在测量 array[2]someFunc.threeobj.three 的查找速度。

您会看到数组和对象的速度几乎相同,但 new 构造明显更快。

数组索引和对象属性可以通过二分查找来解决。我猜数组索引在您测试的引擎上稍微慢一些。

new 构造速度如此之快的一个原因是因为它被编译成一个类,这为整个优化范围打开了大门。我不确定您是否获得了性能,因为查找速度更快,或者是否在其他地方进行了优化。


另一件需要注意的事情是,您不应该让自己受制于这些小的性能基准。在正常使用下,这些解决方案中的任何一个都很好,特别是因为它们会影响您编写代码的方式。如果您遇到实际的性能问题,就可以更轻松地就优化位置做出正确的决定。

关于javascript - 为什么调用嵌套在函数对象中的函数比...更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24714557/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com