【发布时间】:2011-02-04 21:31:59
【问题描述】:
我通过 http://www.youtube.com/watch?v=mHtdZgou0qU 加速了你的 javascript。
所以我做了这个个人速度测试:
var count = 50000000;
var testDummy;
// test 1
testDummy = 0;
var test1Start = new Date().getTime();
var i;
for (i=0;i<count;i++) {
testDummy++;
}
var test1End = new Date().getTime();
var test1Total = (test1End-test1Start);
// test 2
testDummy = 0;
var test2Start = new Date().getTime();
var i
for (i=count; i--;) {
testDummy++;
}
var test2End = new Date().getTime();
var test2Total = (test2End-test2Start);
debug(
"test1\n" +
"total: " + test1Total + "\n" +
"test2\n" +
"total: " + test2Total
);
我得到的结果并不显着,有时它们是偶数,有时不是。
我的问题是,如果我像这样使用 for 循环:“for(i=count;i--;)”真的更快吗?
我在测试中做错了什么吗?
感谢您的帮助!
【问题讨论】:
-
我觉得你这里有问题,
for(i=count;i--;)没有任何意义... -
抱歉,这确实有道理(当它达到 0 次强制转换为 false 时)......但是我看不出这怎么能更快
-
我想这个想法是不是每次循环迭代(测试,增量)执行两个语句,而是可以将增量步骤组合到测试步骤中,每次迭代只执行一个语句......
-
第三个参数不存在,所以通常的操作时间被跳过,第二个参数更快,因为没有运算符比较。我的意思是,通常如果你作为第二个参数,i
-
正如我在回答中提到的,您可能更有可能使用 predecrement 而不是 postdecrement 获得优化。
标签: javascript loops for-loop performance