首页 > 代码库 > Duff 装置中case情况越多性能越好
Duff 装置中case情况越多性能越好
猜想:Duff装置再循环里面,直接调用的方法越多(也就是case的数量比较多),性能相对越好 ???!!!
我们基于Duff装置来做进一步的测试。
然后分别添加两个新的函数,一个函数式 case有4种情况,另一个是case有 12种情况。。。
1 function duffDevice() { 2 var testVal = 0; 3 var n = Math.ceil(iterations / 8); 4 var caseTest = iterations % 8; 5 do { 6 switch (caseTest) { 7 case 0: 8 testVal++; 9 case 7:10 testVal++;11 case 6:12 testVal++;13 case 5:14 testVal++;15 case 4:16 testVal++;17 case 3:18 testVal++;19 case 2:20 testVal++;21 case 1:22 testVal++;23 }24 caseTest = 0;25 }26 while (--n > 0);27 }
1 function duffDeviceSize4() { 2 var testVal = 0; 3 var n = Math.ceil(iterations / 4); 4 var caseTest = iterations % 4; 5 do { 6 switch (caseTest) { 7 case 0: 8 testVal++; 9 case 3:10 testVal++;11 case 2:12 testVal++;13 case 1:14 testVal++;15 }16 caseTest = 0;17 }18 while (--n > 0);19 }
1 function duffDeviceSize12() { 2 var testVal = 0; 3 var n = Math.ceil(iterations / 12); 4 var caseTest = iterations % 12; 5 do { 6 switch (caseTest) { 7 case 0: 8 testVal++; 9 case 11:10 testVal++;11 case 10:12 testVal++;13 case 9:14 testVal++;15 case 8:16 testVal++;17 case 7:18 testVal++;19 case 6:20 testVal++;21 case 5:22 testVal++;23 case 4:24 testVal++;25 case 3:26 testVal++;27 case 2:28 testVal++;29 case 1:30 testVal++;31 }32 caseTest = 0;33 }34 while (--n > 0);35 }
测试结果如下:
以下只是我自己的结论,不一定正确,仅提供参考(不是很确定的东西,不能误人子弟):
这个结果说明了,在Duff循环中,case 情况越多,性能相对越好,但是这样代码的书写不是很方便。Duff装置提供给我的更多的只是一个思路,而不是一个死板的算法公式。
欢迎大家共同探讨。。。迎风一刀劈有礼了。。。
Duff 装置中case情况越多性能越好
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。