gpt4 book ai didi

node.js - node.js 真的没有优化对 [].slice.call(arguments) 的调用吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:38 25 4
gpt4 key购买 nike

bluebird docs ,他们将此作为停止优化的反模式。他们称之为参数泄漏

function leaksArguments2() {
var args = [].slice.call(arguments);
}

我在 Node.js 中一直这样做。这真的是个问题吗。如果是这样,为什么?

假设只有最新版本的 Node.js。

最佳答案

免责声明:我是维基页面的作者

如果包含函数被调用很多(热),这是一个问题。优化编译器(曲轴)不支持泄漏 arguments 的函数。

一般情况下,一个功能比较火爆的时候,都会进行优化。但是,如果该函数包含不支持的功能,例如泄漏 arguments,那么成为热门函数也无济于事,它将继续运行缓慢的通用代码。

与未优化函数相比,优化函数的性能是巨大的。例如,考虑一个将 3 个 double 相加的函数:http://jsperf.com/213213213 21 倍的差异。

如果将 6 个 double 加在一起会怎样? 29x difference通常函数的代码越多,该函数在未优化模式下运行的惩罚就越严厉。

对于 node.js 这样的东西通常是一个巨大的问题,因为任何 cpu 时间都会完全阻塞服务器。就by optimizing the url parser包含在 Node 核心中(我的模块在 Node 自己的基准测试中快 30 倍),在 queries a database 的基准测试中将 mysql-express 的每秒请求从 70K rps 提高到 100K rps .

好消息是 node core is aware of this

关于node.js - node.js 真的没有优化对 [].slice.call(arguments) 的调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27298304/

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