【发布时间】:2016-08-06 00:39:12
【问题描述】:
当我在 chrome 和 nodejs 中测试以下代码时,我得到以下结果:
铬:
带有 VAR 的 for 循环:24.058ms
带 LET 的 for 循环:8.402ms
NodeJS:
带有 VAR 的 for 循环:4.329ms
带 LET 的 for 循环:8.727ms
据我了解,由于块作用域 LET 在 chrome 中更快。但是有人可以帮我理解为什么它在 NodeJS 中是相反的吗? 还是我错过了什么?
"use strict";
console.time("for loop with VAR");
for (var i = 0; i < 1000000; i += 1) {
// Do nothing
}
console.timeEnd("for loop with VAR");
console.time("for loop with LET");
for (let i = 0; i < 1000000; i += 1) {
// Do nothing
}
console.timeEnd("for loop with LET");`
PS:不确定这是否不是测试性能的理想方法。
【问题讨论】:
-
当我颠倒测试的顺序时,第一个(让)更快。比例差不多。
-
你使用的是什么版本的节点?
-
@maioman 使用 v5.10
-
此类测试的问题在于(至少在原则上)运行时优化可能会发现代码完全没有副作用,而根本不这样做。让循环真正做一些事情(一些便宜的事情),看看有什么不同。
-
好吧,我的点是,开销的差异可能完全被代码正在执行的实际工作的成本所掩盖。
标签: javascript node.js performance google-chrome