実は500倍速どころか1000倍速すら超える!

  • 概要

    秀丸マクロとのベンチマークとなります。
    秀丸マクロと秀丸マクロ内に記述したLuaJITでは、状況的にLuaJITに計測上のハンデがあるにもかかわらず、
    その速度は、LuaJITの方が秀丸マクロの1000倍以上高速です。

    ベンチマークの例

    以下のベンチマークを実行してみましょう。
    おそらくはLuaと秀丸マクロで同じようなタイムが表示されるかと思います。

    しかし実行しているループ数は、秀丸マクロの「100*10000回ループ」に対して
    LuaJITは実に「100000*10000回ループ」という驚異的数値です!!

    #L = loaddll( hidemarudir + "\\hmLJ.dll");
    
    //--------------------------------------------------------
    // Lua編
    //--------------------------------------------------------
    // 計測前のシステム時刻
    #dtime1 = tickcount;
    
    // hmLJ(LuaJIT)実行
    #_ = dllfunc(#L, "DoString", ""+
      "local x = 0\n" +
      "b = {}\n" +
      "while x < 100000 do\n" +
      "    local y = 0\n" +
      "    while y < 10000 do\n" +
      "        b[(x+y)%10] = x+y\n" +
      "        y = y + 1\n" +
      "    end\n" +
      "    x = x + 1\n" +
      "end"
    );
    
    // 計測後のシステム時刻
    #dtime2 = tickcount;
    message(str(#dtime2-#dtime1));
    
    
    //--------------------------------------------------------
    // 秀丸マクロ編
    //--------------------------------------------------------
    // 計測前のシステム時刻
    #dtime3 = tickcount;
    
    // 秀丸マクロの実行
    ##x = 0;
    while(##x < 100) {
    
      ##y = 0;
      while(##y < 10000) {
        #b[(##x+##y)%10] = ##x+##y;
        ##y = ##y + 1;
      }
    
      ##x = ##x + 1;
    }
    
    // 計測後のシステム時刻
    #dtime4 = tickcount;
    message(str(#dtime4-#dtime3));
    
    
    
    freedll(#L);
    
    
    秀丸マクロはものすごく速度が遅い言語平均的には、LuaJITは秀丸マクロの500倍ほど高速です。
    (ちなみにLuaJITはスクリプトにも関わらず、全体的にはC言語の1/3ほどの速度が出ます)

    又、IronPythonのような(DLRといった)非常にリッチな作りの言語すら、秀丸マクロの5倍ほどは高速です。