JavaScriptコールスタックサイズ、ブラウザ比較

 

NCZOnline

"Professional JavaScript for Web Developers"や"Professional Ajax"などの書籍の著者であるNicholas C. Zakas氏がJavaScriptの実装に関する興味深い記事をJavaScript stack overflow errorのタイトルで自身のブログにおいて公開した。Webブラウザごとのスタックオーバーフローエラーが比較検討されている。

Nicholas C. Zakas氏が調査したWebブラウザごとのコールスタックサイズは次のとおり。

  • IE7 (1,789)
  • Firefox3 (3,000)
  • Chrome1 (21,837)
  • Opera 9.62 (10,000)
  • Safari 3.2 (500)

Webブラウザが出力するスタックオーバーフローエラーと補足される例外の種類は次のとおり。Opera 9.62は例外を発生させずにJavaScriptの動作を停止されるため、例外は補足できないと説明がある。

  • IE7 "Stack overflow at line x" (Error)
  • Firefox3 "Too much recursion" (InternalError)
  • Chrome1 "n/a" (RangeError)
  • Opera 9.62 "Abort (control stack overflow)"
  • Safari 3.2 "RangeError: Maximum call stack size exceeded." (RangeError)

確認はとれなかったと前置きしたうえで、どうやらIEとOperaは主メモリのサイズに関連してスタックサイズを変更しているようだという記述がある。それ以外のブラウザはあらかじめ定数としてコールスタックサイズが実装されているようだ。寄せられているコメントにもそれを示すようなデータが掲載されている。

JavaScriptにおける大量の再帰処理はパフォーマンスの劣化を招きやすい。またJavaScript stack overflow errorで説明されているように、コールスタックサイズの上限にあたって処理が完了しないケースが考えられる。とくにSafari 3.2のコールスタックサイズは500であり、Safari 3.2で動作するアプリケーションを実装するなら、この数値未満に収まるように実装する必要があることがわかる。Nicholas C. Zakas氏はほかにもJavaScript変数読み書きのパフォーマンス比較と高速化テクニック全4回Speed up your JavaScriptシリーズなど、JavaScriptに関するティップスの紹介をおこなっている。



転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

アニメ「モブサイコ100」BD&DVD9月より続々、イベント申込券やおまけ映像も
[00:00 7/26] ホビー
[ビッグオーダー]「未来日記」作者の異能力マンガが完結 次号にエピローグ
[00:00 7/26] ホビー
[東京ESP]少年エースの超能力マンガ 6年5カ月の歴史に幕
[00:00 7/26] ホビー
Googleお役立ちテクニック - Chromeブラウザに入れて便利な拡張機能・5選
[00:00 7/26] パソコン
「アイステ」が重ねた時間を巡るライブ! 「THE IDOLM@STER STATION!!! Summer Night Party!!!」
[23:44 7/25] ホビー

求人情報