这个简单的for循环有多少个操作?

时间:2016-07-24 22:25:42

标签: javascript

我很好奇,以下代码有多少操作?这与过早优化无关,即魔鬼。我稍后会进行非常严肃的递归操作,并想知道它是如何在较小的范围内工作的。仅供我个人使用。

E.g。

var i, max, fruits = ["apple","banana","orange","mango"]; 
for (i = 0, max = fruits.length;i < max; i+=1) {
   // do something with fruits[i]
}
  • 我猜测,第一行:1次操作(分配水果)
  • 第二行,第一次迭代:5次操作(分配i,长度查找,分配最大值,比较,增加i)
  • 第二行,第二次迭代:2次操作(比较,增加i)
  • 第二行,第三次迭代:2次操作(比较,增加i)
  • 第二行,第四次迭代:2次操作

我知道这些操作的时间和内存成本各不相同,是否有任何经验法则?

1 个答案:

答案 0 :(得分:0)

我会咬人,让我们把它分解。注意&#34;操作&#34;不是CPU操作,我们在这里谈论JavaScript,尽可能远离CPU。

var i, max, fruits ... 3个变量声明,为每个变量配置一个内存区域。

= fru["apple","banana","orange","mango"]; 1个新的Array()初始化,包含4个字符串文字作业,因此第5个,加上作业以及6个< / p>

i = 0, 1作业,我已经宣布了。

max = fruits.length 1个作业,1个词典查找长度(?操作),

i < max 1条件....但是每次循环迭代都会评估条件。现在我认为v8会对此进行优化,但我无法确定。

i+=1 与i ++相同,这应该算作1,可能是2,具体取决于编译器。

这大约给我们14或15次操作,具体取决于编译器。为了优化这里,没有什么可做的。我的经验法则是,更昂贵的操作将与字符串相关,你可以用它们做什么?