サクサク動くマクロを作るコツ
変数の読み書きにかかる時間を計ってみた
2013/04/28
- 秀丸マクロの変数は、あとから定義したものほどアクセスに時間がかかる。
- 定数代わりに変数を使うことを避け、ハードコーディングを心がけよう。
- 数十個以上の変数が必要なときは macrodll の ハッシュ を使おう。速いし、たくさん定義しても遅くならない。
- 秀丸マクロの数値型変数
#hoge
- 秀丸マクロの文字列型変数
$hoge
- 秀丸マクロの静的変数
setstaticvariable
/ getstaticvariable
- macrodll.dll のハッシュ
HASHSTRSTR_SET
/ HASHSTRSTR_GET
- 田楽 (でんがく) DLL の グローバル変数
SETVAR
/ GETVAR
- Ini ファイル
writeinistr
/ getinistr
評価対象の変数等について、1回の読み出しにかかる時間と1回の書き込みにかかる時間の和を計測する。計測方法は次のとおり。
- X 個の異なる変数等を定義する。文字列の場合は8バイトの値を持たせる。
- Y 番目に定義した変数等の値を読み出し、その値をただちに (マクロ変数を介さずに) 同じ変数等に書き込む。
- これを適当な回数 (数秒〜数十秒かかる程度) 繰り返し、手順 2. の1回あたりの所要時間を計算する。
- これを3回繰り返して平均をとる。
実験に使ったマクロはこちら。〈→ソースコード〉
図では X を「定義数」、Y を「定義順」と書く。
結果の数値はこちら。〈→ソースコード〉
- 秀丸エディタ v8.30β37 32bit 通常版
- OS: Windows 8 Pro 64bit
- CPU: Intel Core i5 3475S 2.90GHz (最大 3.60GHz)
- RAM: 8.00 GB
実験中のシステム負荷はこのぐらい。
パラメータは各サブルーチン内にハードコーディングされている。結果はタブ区切りでカーソル位置に挿入されるので、そのまま Excel にコピペできる。