zoukankan      html  css  js  c++  java
  • 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       }
    duffDevice
     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       }
    duffDeviceSize4
     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       }
    duffDeviceSize12

    测试结果如下:

    以下只是我自己的结论,不一定正确,仅提供参考(不是很确定的东西,不能误人子弟):

    这个结果说明了,在Duff循环中,case 情况越多,性能相对越好,但是这样代码的书写不是很方便。Duff装置提供给我的更多的只是一个思路,而不是一个死板的算法公式。

    欢迎大家共同探讨。。。迎风一刀劈有礼了。。。

  • 相关阅读:
    css笔记
    CSS基础
    HTML常用基础标签
    React-Native中列表SectionList学习
    React-Native中列表FlatList配合网络请求fetch学习
    React-Native选项卡(react-navigation)之createBottomTabNavigator学习
    React-Native导航条(react-navigation)之createStackNavigator学习
    iOS中touch事件传递(响应者链)
    ios中UIView和CALayer关系
    iOS中KVO使用理解
  • 原文地址:https://www.cnblogs.com/bg57/p/4113841.html
Copyright © 2011-2022 走看看