VBA性能向上委員会

VBAプログラミングの実行速度に関して、より速い性能を求めて徹底検証をします。


 >  > 性能測定方法

性能測定方法

まずは、検証を行うために『時間を取得する関数』を知る必要があります。

時間を取得する関数には、以下のものがあります。

  • Time
  • Timer
  • GetTickCount
  • timeGetTime

これらの関数を理解したうえで性能測定に使用することをおすすめします。



Time関数とは

現在のシステム時刻を返す関数です。

例えば現在の時刻が午後の3時15分20秒なら、Date型の、15:15:20を返します。


時分秒が取得できますが、ミリ秒は取得できません。


基本的には秒まで取得できれば問題ありませんが、

徹底検証するには不十分な関数です。

1秒未満の高速マクロを検証するためには、この関数は必要ありません。



Timer関数とは

午前0時から経過した秒数を返す関数です。

例えば現在の時刻が午後の3時15分20.602秒なら、Single型の、11720.602を返します。


ミリ秒まで取得でき、浮動小数点計算さえ正確にできれば、より精密な測定ができそうですが、

あくまで午前0時からの経過時間ですので日付をまたぐ測定はできません。


また、Windowsではミリ秒まで返しますが、Macintoshでは秒までしか返さないので

Macintoshを使用している方は注意が必要です。



GetTickCount関数とは

システム起動時から経過した秒数を返す関数です。

例えばシステム起動時から30分20.602秒経っているなら、Long型の、1820602を返します。


ミリ秒まで取得でき、より精密な測定ができそうですが、

OSによっては精度が非常に悪いことがわかっています。



timeGetTime関数とは

システム起動時から経過した秒数を返す関数です。

例えばシステム起動時から30分20.602秒経っているなら、Long型の、1820602を返します。


基本的には、GetTickCount関数と同じです。

GetTickCount関数の精度がOSによって非常に悪くなることより、

timeGetTime関数を使用するほうが無難でしょうか。



使用PC

本サイトの性能測定に使用したPCは以下の通りです。

OSWindows XP Home Edition
CPUIntel Celeron 1.50GHz
メモリ448MB
Excel2003