« VBScriptやVBAのSplit()関数の代替にJScriptを使う。 | トップページ | JScriptのArrayオブジェクトへの追加では、unshift()が遅い。 »

2008年5月11日 (日)

VBScriptの配列は、漸増が遅い。

VBScriptの配列をReDimで伸縮するとき、漸減はそれほどでもないが、漸増はとても遅い。

t1 = Timer
ReDim a(1024 * 512)
For k = 1024 * 512 To 1 Step -1
  ReDim Preserve a(k - 1)
Next
MsgBox Timer - t1
'1.011719

t1 = Timer
a = Array()
For k = 1 To 1024 * 512
  ReDim Preserve a(k)
Next
MsgBox Timer - t1
'31.84375

束で増やすようにすれば、それなりに速くなります。
もし最大値が予想できるなら、最初にどんと大きく作って、最後に小さく調整するとよいでしょう。

« VBScriptやVBAのSplit()関数の代替にJScriptを使う。 | トップページ | JScriptのArrayオブジェクトへの追加では、unshift()が遅い。 »