サクサク動くマクロを作るコツ

変数の読み書きにかかる時間を計ってみた
2013/04/28

目次

結論


*1
v8.30 以降の話。以前は違った。
*2
可読性? 保守性? それよりサクサク動くことが大事でしょ!

評価対象

実験方法

評価対象の変数等について、1回の読み出しにかかる時間と1回の書き込みにかかる時間の和を計測する。計測方法は次のとおり。

  1. X 個の異なる変数等を定義する。文字列の場合は8バイトの値を持たせる。
  2. Y 番目に定義した変数等の値を読み出し、その値をただちに (マクロ変数を介さずに) 同じ変数等に書き込む。
  3. これを適当な回数 (数秒〜数十秒かかる程度) 繰り返し、手順 2. の1回あたりの所要時間を計算する。*1
  4. これを3回繰り返して平均をとる。

実験に使ったマクロはこちら。〈→ソースコード


*1
純粋に変数等の読み書きにかかった時間のみを求めるため、同じ回数だけ空ループを回した場合の所要時間との差分をとる。

実験結果

図では X を「定義数」、Y を「定義順」と書く。

結果の数値はこちら。〈→ソースコード

実験環境

実験中のシステム負荷はこのぐらい。

ソースコード

パラメータは各サブルーチン内にハードコーディングされている。結果はタブ区切りでカーソル位置に挿入されるので、そのまま Excel にコピペできる。