我很好奇,以下代码有多少操作?这与过早优化无关,即魔鬼。我稍后会进行非常严肃的递归操作,并想知道它是如何在较小的范围内工作的。仅供我个人使用。
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]
}
我知道这些操作的时间和内存成本各不相同,是否有任何经验法则?
答案 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次操作,具体取决于编译器。为了优化这里,没有什么可做的。我的经验法则是,更昂贵的操作将与字符串相关,你可以用它们做什么?