javascript - 存储在变量中会提高性能吗?var, let, const 也会影响性能吗?
问题描述
例如,在节点应用程序中,使用 express,而不是使用:
app.listen(3000);
我们用:
const port = 3000;
app.listen(port)
它会提高性能吗,不管它有多小?例如,我听说它提高了循环的性能。
题外话: app.listen() 函数不是一个循环吗?还是它使用内置循环?
另外,用 var、let 或 const 声明在性能上是否彼此不同?例如,由于使用 const 声明 - 而不是 var 或 let - 意味着保持变量“端口”不变,它会产生任何影响吗?
解决方案
不,仅仅通过在变量中存储一个值不会提高性能,事实上,由于发生了额外的内存分配和获取,性能会略有下降。
但是,将计算结果存储在变量中并使用该变量而不是每次需要值时都重新计算它可以提高性能。
转换app.listen(3000)
为以下格式没有任何性能优势。
const port = 3000;
app.listen(port)
但是,如果这些port
值需要一些计算,例如,
const port = process.env.PORT || 3000;
然后将结果存储在一个变量中并在每次需要端口号时使用该值将比每次计算它具有性能优势。
(在您的示例中,由于该port
值仅使用一次,因此将结果存储在变量中是没有意义的。)
例如,我听说它提高了循环的性能。同样,仅当存储在变量中的值需要某种形式的计算时,您才能获得性能优势。
const array = [1,2,3];
const length = array.length;
for (let i =0 ;i<length; i++) {
console.log(array[i]);
}
与下面的示例相比,上面的示例具有性能优势。
const array = [1,2,3];
for (let i =0 ;i<array.length; i++) {
console.log(array[i]);
}
在此示例中,在循环的每次迭代中,都必须计算数组的长度,这是不必要的,因为数组不会改变。
题外话: app.listen() 函数不是一个循环吗?还是它使用内置循环?
不,app.listen()
不是循环。它是一个事件监听器。节点事件循环在内部处理此类 I/O 操作。您可以在此处阅读有关事件循环的更多信息。
推荐阅读
- javascript - firebase 错误未捕获(承诺中) FirebaseError:缺少权限或权限不足
- android - 如何将按钮中的图标向左对齐并保持文本居中
- python - 如何创建多个数据框并将它们组合在一个大数据框中以避免创建多个变量
- react-native - React-Native:App.js 中的标题右导航
- python - 如何修复输入图像、输入/输出类型/图像路径的 YOLOV3 值错误?
- node.js - 如何强制第二个用户加入 socket.io 中创建的房间,而不让他手动输入房间的名称?
- database - SQLite3 - 使用 Webpack 运行这个数据库包
- android - 如何设置 android 的 apksigner 以在 Windows 上运行?
- reactjs - 我在 setState 中使用扩展运算符设置状态时感到震惊
- spring - 添加 orderBy 排序到搜索规范