VBA Speedup

VBA高速化検証:定数の型の違い

 定数とは、数値や論理値、文字列などを予め設定しておき、コードの中で必要に応じて使用します。定数の上手な使用が、保守しやすいプログラムに繋がります。

 そんな定数ですが、「定数の型ごとに変数に代入する速度が違うのか」「定数の使用・不使用で速度に差が出るのか」との疑問をもったため、ここでは『定数の型ごとの値代入速度』に焦点を当て、数値、論理値、文字列のそれぞれのケースで検証テストを行いました。尚、Excel2003と2007で検証を行っています。


定数の型ごとの値代入速度検証テスト

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



結果

◆数値
 ・Excel2003と2007では、Long型、Double型に差が出た
 ・Currency、Single、Double型定数からの代入は、他と比べ倍以上の差が出た
 ・Integer、Long型定数からの代入は、定数不使用の場合とほぼ同速であった

◆論理値
 ・Excel2003と2007では、Boolean型に差が出た
 ・論理値ではVariant型定数からの代入が高速であった

◆文字列
 ・Excel2003と2007では、2007の方が若干速い傾向にあった
 ・String型定数からの代入は、Variant型定数より高速であった
 ・String型定数からの代入は、定数不使用の場合とほぼ同速であった


結果から

 定数を使用する方が高速だと思っていたので、不使用でも速さはほとんど変わらない事に驚きました。高速化という観点からは、数値ではInteger型の定数を極力使用、論理値ではBoolean型の定数は使用せず、Variant型の定数を使用、文字列では、String型定数の使用がポイントです。
 基本的に定数使用・不使用ではほとんど差はないため、プログラム保守の点を考慮し、定数の積極的な使用を推奨します。

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

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

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

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

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

Excel Tips for Teachers

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