【问题标题】:Does repeatedly declaring in a nested for loop slow down a program?在嵌套的 for 循环中重复声明会减慢程序的速度吗?
【发布时间】:2018-03-20 03:51:16
【问题描述】:

使用嵌套的 for 循环,例如:

for (int i=0; i<N; i++)
    for (int j=0; j<N; j++)

这样做更好吗:

for (int i=0, j; i<N; i++)    //Declare them both at once
    for (j=0; j<N; j++)

因为一遍又一遍地声明 j 会在堆栈上创建空间并重复丢弃?适用于小型和大型程序。

【问题讨论】:

  • 是和否。是的,第二个稍微好一点 - 但是 - Java 编译器非常有能力以一种有意义的方式重新排序声明(实际上,它们是相同的)。
  • JavaScript 没有int 类型,如果您使用var,它没有块分数,因此不会真正多次声明变量。
  • 使用letconst 你不能重新声明变量
  • P.S.如果您担心性能,您可以随时测试相对性能,例如对于 JS 尝试jsperf.com。 @SterlingArcher - OP 意味着在内部循环中声明变量将在外部循环的每次迭代中重新创建它,而不是在同一范围内声明具有该名称的其他变量。
  • 也许您可以删除您不感兴趣的语言的标签。

标签: javascript java php for-loop declare


【解决方案1】:

是的,应该只声明一次,因为声明一次并再次使用它是有意义的,应该这样做,因为如果你一次又一次地声明,那么最后一次分配给该变量的内存分配还没有被删除,你正在创建更多的内存为此没有任何用处。在定义的情况下,您一次又一次地定义,您只需访问该位置并更改值,这是一种更好的方法,然后再次声明相同的变量。

【讨论】:

  • 您的答案适用于哪些语言?我不认为 Java 是这样的。我不是 JavaScript 或 PHP 方面的专家,所以我无法评论这些。不幸的是,OP 在一个问题中询问了三种不同的语言。
  • 我的答案尤其适用于 JavaScript。
  • 内存分配永远不会被删除。这在执行具有更大循环的程序时会有所不同。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2012-03-03
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
相关资源
最近更新 更多