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年後は? あなたの年収をデータに基づき予報します。

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

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

人気記事

一覧

イチオシ記事

新着記事

[おそ松さん]舞台版のイヤミのビジュアル公開 “個性派”村田充がなりきり
[18:00 8/27] ホビー
岡村隆史、あばれる君の腫れ上がった顔に衝撃「体張っていて感動」
[18:00 8/27] エンタメ
[エイジアプロモーション]益若つばさ、安西ひろこ、島袋聖南の所属事務所がオーディション開催
[17:52 8/27] エンタメ
高橋愛、浴衣姿で地元・坂井市のアンテナショップ1日店長に就任
[17:30 8/27] エンタメ
[笑福亭鶴瓶]鶴瓶落語が歌舞伎に 作者に聞く「山名屋浦里」
[17:26 8/27] エンタメ

求人情報