|
Thomas Fuchs, author of the script.aculo.us user interface JavaScript library, a member of the Prototype core team and a Ruby on Rails core alumnus. |
Thomas Fuchs氏が6 easy things you can do to improve your JavaScript runtime performanceにおいてJavaScriptの実行パフォーマンスを改善するための6つのテクニックを紹介している。Thomas Fuchs氏はscript.aculo.usの開発者であるとともにPrototypeコアチームのメンバーも務めている。またRuby on Railsでコアチームで開発を担当していたこともある。
| JavaScriptエンジン |
|---|
| SpiderMonkey (Firefox) |
| JavaScriptCore (Safari) |
| JScript (IE8) |
| V8 (Chrome) |
紹介された6つのテクニックは次のとおり。
関数呼び出しを使わずにインラインに展開する。なおIE8では実行してから1秒後にIEの動作を遅くする原因になっている可能性があるという警告ダイアログを表示してくるため、関数呼び出しについてはベンチマーク結果が掲載されていない。
|
|
関数呼び出しではなくインラインに展開する - 6 easy things you can do to improve your JavaScript runtime performanceより抜粋 |
ブラウザごと実行時間比較 |
従来の{}といった生成方法ではなくnewを使って配列やオブジェクトを作成する。
|
|
配列とオブジェクト生成の指定方法の違い - 6 easy things you can do to improve your JavaScript runtime performanceより抜粋 |
ブラウザごと実行時間比較 |
forとwhileの間には性能差は見られない。ループは展開することで実行速度の改善が期待できる。
|
|
ループを使うケースと展開するケース - 6 easy things you can do to improve your JavaScript runtime performanceより抜粋 |
ブラウザごと実行時間比較 |
グローバル変数のままアクセスせずに、一旦ローカルにキャッシュしてから利用する。
|
|
ローカル変数とグローバル変数 - 6 easy things you can do to improve your JavaScript runtime performanceより抜粋 |
ブラウザごと実行時間比較 |
評価式を工夫し、たとえば「&&」を使う場合など、先にfalseが入る可能性が高いものを先に記述するなどして実際のステップ数の削減に努める。
|
|
評価式を工夫して処理ステップを減らす - 6 easy things you can do to improve your JavaScript runtime performanceより抜粋 |
ブラウザごと実行時間比較 |
with () {}でスコープを指定する方法と直接記述する方法では、直接記述する場合の方が実行速度が速い。また例外処理を補足する記述はそうでない場合と比べて実行速度が遅い。
|
|
withスコープの利用の有無 - 6 easy things you can do to improve your JavaScript runtime performanceより抜粋 |
ブラウザごと実行時間比較 |
|
|
例外処理の利用の有無 - 6 easy things you can do to improve your JavaScript runtime performanceより抜粋 |
ブラウザごと実行時間比 |
6 easy things you can do to improve your JavaScript runtime performanceではこれ以外にもあまり効果が見られないテクニックについても記載があるほか、JITエンジンを搭載したブラウザでは特定の機能がうまくサポートされていないことなども紹介されている。
Thomas Fuchs氏はJavaScriptのパフォーマンスについてまとめた電子書籍JavaScript Rocks! JavaScript Performance, Benchmarking and Tuning Ebookの執筆者であり、最適化の資料として同書籍を薦めている。また高速化に関しては以前JavaScriptを高速化する31のチェックリストを公開している。
| JavaScriptを高速化する31のチェックリスト [2009/10/29] |
| すばる望遠鏡、天の川銀河周辺の矮小銀河が120億歳以上であることを解明 [18:18 2/7] |
| Twitter、サイト作成用フレームワーク「Bootstrap 2.0」を公開 [16:55 2/7] |
| ネットワールド、業界初のディスクレスVDIを発表 [15:12 2/7] |
| ラリタン、1台で8サーバにノンブロッキングアクセス可能なKVMスイッチ [12:45 2/7] |
| ST、SD 3.0規格に準拠する電圧レベル・トランスレータを発表 [11:28 2/7] |
|
デル、「Inspiron」にワイヤレスマウスが付属する3日間限定キャンペーン [18:29 2/7] パソコン |
|
すばる望遠鏡、天の川銀河周辺の矮小銀河が120億歳以上であることを解明 [18:18 2/7] エンタープライズ |
|
神山健治監督の現代版「サイボーグ009」特報映像が公開 [17:40 2/7] ホビー |
|
TVアニメ『聖闘士星矢Ω』、4月放送開始! 新作CG映画はさとうけいいち監督 [17:39 2/7] ホビー |
|
[渡部陽一]NHKアラビア語講座にレギュラー出演「目標は通訳なしで取材」 [17:39 2/7] エンタメ |