2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« JScriptのArrayオブジェクトへの追加では、unshift()が遅い。 | トップページ | JScriptのArrayオブジェクトからの取り出し(pop/shift)の代替 »

2008年5月13日 (火)

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)の代替 »