var aTest=[]; for(var i=0;i<1000000;i++){ aTest[i]=i; } function process(val){ return val+1; } function useDuffDevice(aTest){ var len=aTest.length,j=len%8,k; while(j){ process(aTest[len-(j--)]); } j=Math.floor(len/8); while(j--){ k=j*8-1; process(aTest[k--]); process(aTest[k--]); process(aTest[k--]); process(aTest[k--]); process(aTest[k--]); process(aTest[k--]); process(aTest[k--]); process(aTest[k--]); } } function useWhile(aTest){ var len=aTest.length; while(len--){ process(aTest[len]); } } function useFor(aTest){ var len=aTest.length; for(var i=0;i<len;i++){ process(aTest[i]); } } console.group("useDuffDevice"); var date=new Date(); useDuffDevice(aTest); var count=(new Date())-date; console.log(count); console.groupEnd(); console.group("useWhile"); date=new Date(); useWhile(aTest); count=(new Date())-date; console.log(count); console.groupEnd(); console.group("useFor"); date=new Date(); useFor(aTest); count=(new Date())-date; console.log(count); console.groupEnd();
结果:
没有明显的性能提升啊,是我代码写的有问题吗?
你的程序我大致看了看,调用程序的时间复杂度都是O(n),在这个时间复杂度下,你使用什么循环并没有关系,时间开销不过是计算机运行性能或运行时性能的一些小区别而已,所以你感觉不出来。
减少迭代次数:肯定是有性能提升的。在别的语言中也会有的。
大型程序里才会有比较明显的
@飞舞轻扬在台北: 目前迭代了100w次,不算小吧
@菜鸟程序猿: 你看了《数据结构和算法》就知道了。
@荒野的呼唤: 谢谢回复,原理我是知道的,只是想做个测试验证一下,结果没达到预期的效果
用IE游览器试试,这货的JS运行速度忒慢