请比较:
// Version 1
const oneHour = 60 * 60
function checkTime(timePast) {
if (timePast<7 * 24 * oneHour) {
// Do something
}
}
// Version 2
const oneHour = 60 * 60
const oneWeek = 7 * 24 * oneHour
function checkTime(timePast) {
if (timePast<oneWeek) {
// Do something
}
}在对checkTime()的数百万次调用中,版本2是否比版本1更快,或者Node.js是否足够智能,以便在版本1中只进行一次额外的计算?
发布于 2020-06-20 22:43:17
您可以像这样轻松地检查它:
const oneHour = 60 * 60
const oneWeek = 7 * 24 * oneHour;
const randomData = generateArray();
function generateArray () {
let arr = [];
for(i = 0; i < 10000000; i++) {
arr.push(Math.floor(Math.random() * 10))
}
return arr;
}
function checkTime1(timePast) {
if (timePast<7 * 24 * oneHour) {
Math.random()
}
}
function checkTime2(timePast) {
if (timePast<oneWeek) {
Math.random()
}
}
console.time('checkTime1');
randomData.forEach(i => checkTime1(i))
console.timeEnd('checkTime1');
console.time('checkTime2');
randomData.forEach(i => checkTime2(i))
console.timeEnd('checkTime2');在多次检查之后,更改"checkTime2“和"checkTime1”的顺序,以确保结果有效。看起来Node.js足够聪明,可以做额外的计算。
发布于 2021-03-22 19:25:46
根据这篇文章:Node.js Under The Hood #10 - Compiler Optimizations!节点的编译器将执行常量折叠优化,这样const j = 3 + 9就会变成const j = 12。
https://stackoverflow.com/questions/62485887
复制相似问题