Excel/VBA:MidとMid$とで速度対決!
文字列の一部を抜き取るVBA関数のMidですが、Mid$というものもあります。
機能的には全く同じなのですが、$が付いていない方はバリアント型の値を返し、$付きは文字列型の値を返します。この差が速度にどれくらい効くのか検証してみました。
[ad#top-1]
検証したプログラム
以下のプログラムを作って速度検証しました。
Sub MidSpeedTest() t1 = Timer() s = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" For i = 0 To 10000000 '↓ここをMidとMid$に切り替えて速度比較 result = Mid(s, 5, 3) Next i t2 = Timer() Range("A1") = t2 - t1 'A1セルに速度の結果 End Sub
result = Mid(s, 5, 3)
の1行だけだと一瞬で終わるので、10000000回ループしました。
結果
以下が結果です。単位は秒。
– | Mid | Mid$ |
---|---|---|
1 | 3.46 | 3.23 |
2 | 3.42 | 3.23 |
3 | 3.45 | 3.29 |
4 | 3.48 | 3.22 |
5 | 3.45 | 3.22 |
6 | 3.44 | 3.22 |
7 | 3.43 | 3.21 |
8 | 3.45 | 3.22 |
9 | 3.47 | 3.22 |
10 | 3.42 | 3.22 |
平均値 | 3.45 | 3.23 |
Mid関数を使うと平均3.45秒、一方でMid$関数だと3.23秒と、わずかながらMid$の方が速い結果となりました。約7%ほど速かったことになります。
$付き関数はMidのほかにも、Left, Right,などがあります。
簡単なプログラムだと大したことありませんが、Mid関数を多用する場合やループの中に置く場合は、Mid$を使った方が良さそうです。
[ad#ad-1]
スポンサーリンク