Variantはメモリの無駄遣いか

Variantはメモリの無駄遣いをするので使うべきでは無いという説がある。
本当にそうなのだろうか。
無駄遣いが問題になるのは大量の配列を確保したときぐらいだろう。
ではVariantと他の配列でどの程度違うのかを実測で検証してみる。

タスクマネージャーでメモリ使用量を確認してみる。(Excelアプリのメモリ使用量を見る)
差がわかりやすい、というところで以下のようなプログラムを作成した。
Sub memory_test()
Dim i As Variant
'Dim a(10000000) As Variant
Dim a(10000000) As Long

For i = 0 To 10000000
a(i) = i
Next
MsgBox "OK"
End Sub
これでLongとVariantとでコメントアウトを入れ替えて確認をしてみる。
0を数えるのが面倒なほど多いが、1000万個の配列を用意している。
消費量はVariantで150Mbyteぐらい、Longで38MByteくらいである。
(ExcelでVBエディタを操作したりするだけで数MByte程度は動くので厳密性はない。)
つまり1000万個の配列を用意する必要があれば100MByteは違う、というレベルの話である。
一つ桁を変えれば100万個程度の配列なら10MByte程度しか違わない。
まあ、数百万個以上の変数(配列)を扱うかどうかの話なのだ。
せいぜい百個にも満たないような変数の型での節約なんぞグダグダいう時代ではないのはと思う。
comments (0)

コメント

Comment Form