【问题标题】:Does storing in variables increase performance? And do var, let, const also affect performance?存储在变量中会提高性能吗? var, let, const 也会影响性能吗?
【发布时间】:2019-09-30 09:46:11
【问题描述】:

例如,在节点应用程序中,使用 express,而不是使用:

app.listen(3000);

我们使用:

const port = 3000;
app.listen(port)

它会提高性能吗,尽管它很小? 例如,我听说它提高了循环的性能。

题外话:app.listen() 函数不是一个循环吗?还是使用内置循环?

另外, 用 var、let 或 const 声明在性能上是否彼此不同?例如,由于使用 const 声明 - 而不是 var 或 let - 意味着保持变量“端口”不变,它会产生任何影响吗?

【问题讨论】:

  • 您可以阅读以下问题here
  • 声明变量将调用查找。不管速度有多快,都需要一些额外的时间。所以它比较慢。 它提高了循环的性能,检查i< array.length 会比i<length 慢。所以是的,它确实增加了一点,但在某些情况下。但是改进算法和减少迭代次数总是会产生更好的结果。您应该在可读性、可维护性和高性能代码之间找到平衡

标签: javascript node.js performance variables


【解决方案1】:

不,仅仅通过在变量中存储一个值并不会提高性能,事实上,由于发生了额外的内存分配和获取,性能会略有下降。

但是,将计算结果存储在变量中并使用该变量而不是每次需要值时都重新计算它可以提高性能。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2021-04-29
    • 2012-02-04
    相关资源
    最近更新 更多