JScriptのArrayオブジェクトへの追加では、unshift()が遅い。
JScriptのArrayオブジェクトに追加するとき、push()はそれほどでもないが、unshift()はとても遅い。
t1 = Timer
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
Set a = sc.Eval("new Array()")
For k = 1 To 1024 * 512
a.push k
Next
MsgBox Timer - t1
'9.523438
push()は、VBScriptやVBAの配列をReDimで漸増するより速いので、その代替に使えます。
t1 = Timer
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
Set a = sc.Eval("new Array()")
For k = 1 To 1024 * 8
a.unshift k
Next
MsgBox Timer - t1
'5.617188
unshift()は、怖ろしく遅いので使うべきでないかも。
push()は、o(n)だけど、unshift()は、o(n**2)みたい。
もし、必要なら、push()とreverse()で代替したほうがよいでしょう。
« VBScriptの配列は、漸増が遅い。 | トップページ | JScriptのArrayオブジェクトからの取り出し(pop/shift)は、ともに遅い。 »