実は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倍ほどは高速です。