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

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

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

人気記事

一覧

イチオシ記事

新着記事

ロバート秋山が扮する「クリエイターズ・ファイル展」開催中
[20:56 9/27] シゴト
「ぼくは麻理のなか」完結巻で色紙当たる、押見修造のサイン会も
[20:47 9/27] ホビー
JR北海道、石北本線上川~白滝間10/1復旧 - 特急「オホーツク」も運転再開
[20:44 9/27] ホビー
子どものストレス、世帯所得によって原因に違い
[20:32 9/27] マネー
[映画興行成績]「君の名は。」がV5 累計興収は111億円を突破
[20:30 9/27] エンタメ

求人情報