Java/.NET Performance Monitoring, Analysis, Diagnostics & Profiling - Application Performance Management

Andreas Grabner氏がGarbage Collection in IE7 heavily impacted by number of JavaScript objects and string sizes Performance, Scalability and Architectureにおいて、IE7のJavaScript実行において大きくパフォーマンスが劣化するパターンがあるとし、その内容と、それを発見するに至った経緯を紹介している。

Andreas Grabner氏はXML、JSON、XHR、スクリプトタブなどを使った非同期通信における動作を調査しようとしてサンプルコードを書いたところ、IE7できわめて実効速度が遅くなるパターンがあることを発見したという。多くのJavaScriptオブジェクトを生成するケース、大きなオブジェクト配列を生成するケース、大きな文字列を生成する場合がそれに該当しているという。どうやらIEにおけるガベージコレクタとオブジェクトアロケーションの動作にその原因があるのではないかという推測が掲載されている。

IE8 デモページ実行例

IE7 デモページ実行例

IE6 デモページ実行例

Chrome5 デモページ実行例

Opera 10.5 デモページ実行例

Firefox 3.7a3 デモページ実行例

IE6 IE7 IE8 Chrome5 Opera10.5 Firefox 3.7a3
110 93 10 1 1 2

計測に使ったとされるサンプルページが公開されているため、実際にIE6、IE7、IE8、Chrome5、Opera 10.5、Firefox 3.7a3を使って実行してみた。たしかにIE6とIE7はそれ以外のブラウザに比べてかなり長い実行時間がかかっている。シェアは減りつつあるとはいえ、IE6とIE7のシェアはまだだいぶ高い。JavaScriptの実行パフォーマンスを考慮するのであれば、こうした状況を回避する必要があるとみられる。