有人可以向我解释为什么当我运行以下代码时所需的时间更少:
for2=longTsk() -- approx 2500ms every time
并且对于
for2=longTsk3() -- approx 3000ms every time
这两个函数中的普通 for 循环每次都需要大约 1500 毫秒
function longTsk() {
return new Promise((resolve) => {
setImmediate(() => {
for (let i = 0; i < 2019000000; i++) {
}
console.log('HOILA');
resolve()
});
});
}
function longTsk3() {
return new Promise((resolve) => {
setImmediate(() => {
for (let j = 0; j < 2019000000; j++) {
}
console.log('HOILA');
resolve()
});
});
}
const date = Date.now()
async function doForAll() {
const for1 = longTsk()
const for2 = longTsk() //when i change this to longtsk3 exact double time is required
await Promise.all([for1, for2])
console.log(Date.now() - date);
}
doForAll()
console.log('sldkfgj');
console.log('lskdjglkjdfg');
我第一次跑,longTsk3
然后longTsk
在这个屏幕截图中
为什么用另一个类似的函数(longTsk3)替换第二个函数调用需要 500 毫秒以上?这个时间尺度可能会因机器而异,但是在同一台机器上运行的两种情况下肯定会有很大的时间差异!