JScriptのArrayオブジェクトからの取り出し(pop/shift)は、ともに遅い。
JScriptのArrayオブジェクトから取り出すとき、pop()も遅いが、shift()はもっと遅い。
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
Set a = sc.Eval("new Array()")
t1 = Timer
For k = 1 To 1024 * 16
a.push k
Next
MsgBox Timer - t1
'0.28125
t1 = Timer
For k = 1 To a.length
x = a.pop()
Next
MsgBox Timer - t1
'23.76172
t1 = Timer
For k = 1 To a.length
x = a.shift()
Next
MsgBox Timer - t1
'101.3867
pop()も、shift()も、共にo(n**2)みたい。
より遅いshift()は、使わないほうがよいかも。
もし、必要なら、reverse()とpop()で代替したほうがよいでしょう。
« JScriptのArrayオブジェクトへの追加では、unshift()が遅い。 | トップページ | JScriptのArrayオブジェクトからの取り出し(pop/shift)の代替 »