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装置提供给我的更多的只是一个思路,而不是一个死板的算法公式。

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

  • 相关阅读:
    模糊查询和聚合函数
    数据查询基础
    使用RestSharp请求GBK编码的网站乱码(NetCore环境)
    使用VsCode的Rest Client进行请求测试
    基于c#发送Outlook邮件(仅SMTP版本)
    创建Gitblit本地服务器(For windows )01
    获取本地文件然后批量存储到数据库
    描点的改进:运用chart画图。
    获取ADO连接字符串
    lock(this)
  • 原文地址:https://www.cnblogs.com/bg57/p/4113841.html
Copyright © 2011-2022 走看看