【发布时间】:2020-11-23 12:14:58
【问题描述】:
在 Typescript (ES6) 中,我有一个以 1 ms 的间隔运行的队列,我想知道哪种方法更适合提高性能。
1.
setInterval(() => {
//if (this._queue.filter(a => !a.running && a.cbs.length) { // incorrect
if (this._queue.filter(a => !a.running && a.cbs.length).length) { //edit
for (let i = 0; i < this._queue.filter(a => !a.running && a.cbs.length).length; i++) {
...
}
}
}, 1);
setInterval(() => {
for (let i = 0; i < this._queue.filter(a => !a.running && a.cbs.length).length; i++) {
...
}
}, 1);
在方法 #1 中,它显然有一行额外的代码,但我很确定 if 在每次间隔迭代时会占用更少的 CPU 计算。这是正确的吗?
在方法 #2 中,它必须定义 i,然后运行过滤器,然后尝试迭代。
这可能在性能上的差异如此之小,这可能无关紧要,但我仍然感兴趣。
【问题讨论】:
-
第二个更好,不重复两次
-
是的,如果它通过方法 1 的 if。但是如果它很少通过 if 怎么办?
标签: javascript typescript for-loop if-statement