例如,在节点应用程序中,使用express而不是:
app.listen(3000);
我们使用:
const port = 3000;
app.listen(port)
无论大小如何,它都会提高性能吗? 例如,我听说它可以提高循环性能。
与主题无关:app.listen()函数是否有点循环?还是使用内置循环?
另外, 用var,let或const声明的性能彼此不同吗?例如,由于使用const而不是var或let进行声明意味着隐含了对变量'port'的保留,所以它会产生任何效果吗?
答案 0 :(得分:3)
不,仅通过将值存储在变量中并不会提高性能,实际上,由于会发生额外的内存分配和提取,因此性能会略有下降。
但是,将计算结果存储在变量中并使用该变量而不是在每次需要值时都重新计算它会提高性能。
将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操作。您可以了解有关事件循环here的更多信息。