gpt4 book ai didi

javascript - 为什么大多数 JavaScript 原生函数都比它们的原始实现慢?

转载 作者:行者123 更新时间:2023-12-03 03:21:55 25 4
gpt4 key购买 nike

我注意到了some tests原生 JavaScript 函数通常比简单的实现慢得多。这背后的原因是什么?

最佳答案

查看ECMA-262后。看起来 native 实现在错误处理和功能方面比简单的 self 实现做得更多

例如,查看 MDN 上 map 的 polyfill 实现:Array.prototype.map() 。它基于 ECMA-262 中指定的相同算法。现在,更新您的示例以使用此算法可以使 native 实现更快,尽管只是稍微加快:map-native-vs-implemented .

此外,map 可能不是测试的最佳示例,因为它在 native 代码和提供的 lambda 函数之间来回切换。

我希望原生 concat 函数有更好的性能。尽管如此,看看 ECMA-262 我们可以发现它也只是做了更多。查看 15.4.4.4 节中的算法,我们可以看到它处理一些额外的情况。例如,组合多个参数 - 有些是数组,有些是其他类型:

[1, 2, 3].concat([4, 5, 6], "七", 8, [9, 10]);

返回

[1,2,3,4,5,6,“七”,8,9,10]

最后值得注意的是,这些都是非常基本的算法。当在巨大的数据集上运行此类算法或连续运行数千次时,一种算法似乎比另一种算法快得多。然而,即使在数千次迭代中执行几次额外的安全检查,也会使一种算法比不执行这些检查的算法显着慢。计算计算操作 - 如果额外的错误处理和功能使循环中的代码行数加倍,那么速度会变慢是很自然的。

关于javascript - 为什么大多数 JavaScript 原生函数都比它们的原始实现慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21037888/

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