VBA Speedup

VBA高速化検証:変数の宣言場所の違い

 ソフト作成の過程で、VBAの処理スピードに関する検証を行いました。
 ここでは『変数宣言場所の違い』に焦点を当て、Long型、String型、Boolean型、それぞれの変数に値を格納する検証テストを行いました。尚、Excel2003と2007で検証を行っています。


変数の宣言場所の違いによる値格納速度検証テスト

 下の表とグラフは、私のパソコン※でスピード検証テストを行った結果です。
 ※Vista / intel Core2 Duo / Excel2003,2007

◆Long型  Test1~4は、変数の宣言場所に違いがあります。宣言場所は下記の通りです。

【結果】
 ・Excel2003と2007では、ほぼ同様の結果であった
 ・プロシージャ内での変数宣言が最も高速であった
 ・宣言セクションでの「Dim・Public」宣言は、ほぼ同様の結果であった
 ・Public宣言は、プログラムを記述したモジュールとは別のモジュールに宣言した方が高速であった

◆String型

【結果】
 ・Excel2003と2007では、2003の方が高速であった
 ・2003のTest1~4は、ほぼ同速であった
 ・2007では、プログラムを記述したモジュールとは別のモジュールに宣言した方が高速であった

◆Boolean型

結果

 ・Excel2003と2007では、2003の方が若干高速であった
 ・プロシージャ内での変数宣言が最も高速であった
 ・宣言セクションでの「Dim・Public」宣言は、ほぼ同様の結果であった
 ・Public宣言は、プログラムを記述したモジュールとは別のモジュールに宣言した方が高速であった


結果から

 変数は宣言場所の違いで、値を格納する速度に違いが生じることがわかりました。
 プロシージャに、その都度変数を宣言すると時間のロスになるのでは、と予想していただけに、速いことが多かった結果は意外でした。この事から、プロシージャに宣言出来る変数は、極力プロシージャ内で宣言すると良いと思います。
 そして、Public宣言をする変数は、宣言専用のモジュールを作成し、まとめて宣言するのも1つの方法だと考えられます。
 唯、この検証は、テストファイルを閉じ、再び開き計測すると、Test結果の順にが変動する事もあったため、他の要因も絡んでいる可能性があります。ちょっとした参考程度に留めておいて下さい。

※今回のテストは私のパソコンのみの検証であり、どのような環境でも、同様の結果を保証するもの
 ではありません。

※Excelのバージョンで結果に違いが出る事が考えられます。

検証テストコードとファイル

 検証テストのコード ・・・ [ Code ]

 検証テストを行ったファイルです。興味の有る方は試してみて下さい。
  ・Excel97-2010 ・・・[Test_File]

Excel Tips for Teachers

Copyright (C) 2009- 坂江 保 All Rights Reserved.