« 2011年4月 | トップページ | 2011年6月 »

2011年5月の1件の記事

2011年5月27日 (金)

array.push(x) と array[array.length]=x はどっちが速い?

2008年3月とちょっと古い資料ですが、Internet Explorer 8 Beta 1 for Developers ホワイトペーパー の「プラットフォーム パフォーマンスの向上」の資料に以下の記載があるのを見つけました。

配列の記憶域および JScript エンジン内でのアクセスの最適化によって、ほとんどの組み込み Array メソッドでパフォーマンスが向上します。組み込み Array メソッドのより迅速な代替メソッドとして独自の Array メソッド (Array.push や Array.pop など) を実装している JScript 作成者は、組み込みメソッドを使用してコード パフォーマンスを向上させることを検討してください。

そういえばこちらは原文が 2006年11月ともっと古い記事ですが、Dev.Opera の「効率的な JavaScript」にはこう書いてあります。

効率的な JavaScript - Dev.Opera

ふつうのコードでは効き目が薄いけれど, 性能の肝になるループや関数では高速化できることがある. 例の一つは配列の push メソッド. これは配列の最後を指す添字に要素を追加するより遅い.

http://dev.opera.com/articles/view/efficient-javascript-ja/?page=2#primitiveoperator

ということで、どっちが速いか実験してみました。

array.push(x) と array[array.length]=x はどっちが速い? - jsdo.it - share JavaScript, HTML5 and CSS

結果はこんな感じ。Windows 7 32bit です。

Opera 11.11

array.push(x);         // 131 ms
array[array.length]=x; // 60 ms

Windows Internet Explorer 10 Platform Preview 1

array.push(x);         // 32 ms
array[array.length]=x; // 44 ms

Windows Internet Explorer 8

array.push(i);         //1192 ms
array[array.length]=i; //1377 ms

ウェブブラウザによって特性が違うんですね。

ほかのブラウザでは実験しないのかという話はちょっと置いといて…

ということで、初めて jsdo.it 使ってみたのでした。

« 2011年4月 | トップページ | 2011年6月 »

Social connection

  • Check

最近のトラックバック

2017年9月
          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

これも見とるよ

その他

無料ブログはココログ