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 (2)

コメント

http://deandrarusak.hatenablog.com | 2017/07/31 04:13 PM
This post presents clear idea in support of the new
viewers of blogging, that truly how to do blogging and
site-building.
Can Pilates make you look taller? | 2017/07/29 06:02 AM
This text is worth everyone's attention. Where can I find out more?

Comment Form