次の方法で共有


Internet Explorer 8 開発者ツールの Jscript プロファイラーの紹介

更新日: 2008 年 9 月 11 日


本記事は、Internet Explorer 開発チーム ブログ (英語) の翻訳記事です。本記事に含まれる情報は、Internet Explorer 開発チームブログ (英語) が作成された時点の内容であり、製品の仕様や動作内容を保証するものではありません。本記事に含まれる情報の利用については、使用条件をご参照ください。また、本記事掲載時点で、Internet Explorer 開発チーム ブログ (英語) の内容が変更されている場合があります。最新情報については、Internet Explorer 開発チームブログ (英語) をご参照ください。

翻訳元 : Introducing the IE8 Developer Tools JScript Profiler (英語)



こんにちは、Jscript チームのプログラムマネージャー、Sameer Chabungbam です。

最近公開された Internet Explorer 8 Beta 2 には、Web アプリケーションの開発を簡単に、かつより生産的にすることを支援するための多くの改良が含まれています。改良点のひとつに開発者ツールの

JScript プロファイラーがあり、これはパフォーマンスに関する問題を見分けて修正するのに役立つ重要なスクリプト関連の動作データをWeb 開発者に提供します。このプロファイラーがWeb アプリケーションのスクリプトのパフォーマンスをよりよく調整するためのとても有益なツールになると確信しています。Jscript プロファイラーは軽量で、使いやすく、次の機能が利用できます。

  • ふたつの表示方法によるJscript 機能の動作データの提供
    ・機能ビュー - すべての機能の一覧表示
    ・呼び出しツリービュー- 呼び出し順の階層表示
  • ファイルへのエクスポートのサポート
  • 匿名関数の名前の推定
  • Jscript ビルトイン関数の分析
  • 複数の分析レポートのサポート
  • 複数のページにわたるナビゲーションと更新操作を含む分析のサポート

本投稿ではこのプロファイラーの概要と幾つかの機能を紹介します。ぜひこのツールをお試しいただき、フィードバックをお寄せください。

プロファイラーの使用

Internet Explorer 8 の開発者ツールはF12 キーを押すか、コマンドバーのツールドロップダウンリスから"開発者ツール" を選択することで起動します。プロファイルタブに切り替えれば、新しいスクリプトプロファイラーが見えます。"プロファイリングの開始" ボタンをクリックすると新しいプロファイリングセッションが開始されます。

この状態で分析が必要な動作を行うと、Jscript の動作データがプロファイラーによってバックグラウンドで自動的に採取されます。ボタンの表示が"プロファイリングの停止" に変わってプロファイリングが行われていることに注意してください。プロファイリングを停止させる場合、"プロファイリングの停止" ボタンをクリックします。プロファイラーは収集した動作データを処理し、終了したセッションの分析レポートを表示します。

分析結果を確認する

分析結果は現在の表示のドロップダウンリストで選択できる二種類の表示方法でデータを提供します。

  • 機能ビュー : 動作データに対応するすべての機能の一覧表です
  • 呼び出しツリービュー: 呼び出し実行シーケンスに基づく機能の階層リストです。それぞれのノードには機能とすべての呼び出し機能の一覧、呼び出しの動作データが対応しています。呼び出すツリー表示は、スクリプトのパフォーマンスに大きな影響のあるコールスタックトレースを見つけるのに便利です。

両方のビューは、それぞれの行がJscript の機能に相当し、さまざまな動作データをそれぞれの列に相当します。この表示は別の列を表示するためにカスタマイズできます。列のヘッダーを右クリックし、表示させたい列を選択するために[列の追加と削除] を選択します。

対応する列のヘッダーをクリックするか、右クリックして表示されるコンテキストメニューで"並び替え" から基準の列を選択することで、行を並べ替えることができます。

表示できる列は以下の通りです

  • 機能: 機能の名前
  • 回数: 機能が呼び出された回数
  • 包括時間 (ミリ秒) : この機能と子機能が消費したミリ秒単位の時間
  • 包括時間 (%): この機能と子機能が消費した時間の割合
  • 排他時間 (ミリ秒) : この機能が消費したミリ秒単位の時間
  • 排他時間 (%) : この機能が消費した時間の割合
  • 平均時間 (ミリ秒) : この機能と子機能が消費したミリ秒単位の平均時間
  • 最大時間 (ミリ秒) : この機能と子機能が消費したミリ秒単位の最大時間
  • 最小時間 (ミリ秒) : この機能と子機能が消費したミリ秒単位の最小時間
  • URL : この機能が定義されているソースファイルのURL
  • 行番号 : ソース ファイルでこの機能が開始されている行番号

行をダブルクリックすると対応する機能が定義されている部分のソースコードがスクリプトタブで表示できますが、これは動作データでURL 情報が収集されており、スクリプトタブにソースファイルがロードされている場合に有効です。プロファイラーにURL 情報を収集させるためには、Internet Explorer のスクリプトデバッガーを有効にする必要があります。[注意 : スクリプト デバッガーは[ツール] > [インターネットオプション] > [詳細設定] タブ から有効にできます]

データのエクスポート

しばしば、分析レポートをさらに解析したり、グラフ化したり、他のアプリケーションと共有したいことがあるでしょう。この希望を簡単にかなえるため、プロファイラーはデータをコンマ区切り (CSV) 形式でエクスポートすることを可能にしました。このデータは Microsoft Office Excel ® のような他のアプリケーションで開いて、共有することができます。"データのエクスポート" ボタン をクリックし、ファイル名を設定すれば、現在のレポートの動作データがファイル化されます。現時点では、機能ビューだけでエクスポートは可能で、呼び出しツリービューではエクスポートできません。

推定される名前

JavaScript では、関数名は任意の設定項目です。名前のない関数(匿名関数 - anonymous function - と呼びます) を定義することができます。実際、このようなことは頻繁にあります。現実のJavaScript 関数の多くはオブジェクトリテラルのコンテキストで定義され、大抵の場合は匿名(anonymous) です。このことはプロファイルレポートで問題となります。複数のanonymous なエントリーが存在する場合、これを識別する唯一の方法は、URL と行番号の情報からその関数を定義している実際のソースコードを探すしかありません。これは便利というには程遠く、分析レポートを読みにくく、分かりにくいものにします。

この問題を打開するため、Jscript プロファイラーは関数が定義されているコンテキストの位置を元に、それぞれのanonymous ファンクション名の推定を試みます。どのように実行するかを図示すると次のようになります。

var Shape = {

    Area : function () {    .    .    . }     // anonymous function 1

};

Foo = function () {    .    .    . }     // anonymous function 2

このコードを分析すると、これらの関数は両方ともanonymous (匿名) と表示される代わりに、それぞれ"Area" と "Foo" と推測してレポートされるでしょう。この方法で、ソースコードを開くことなく、分析レポートでどの関数が参照されているのか速やかに識別できます。名前の推測に利用されているヒューリスティックロジックはごく単純で、パフォーマンス上のオーバーヘッドの発生を防いでいます。場合によっては名前の推定に失敗することがありますが、その場合、関数は特別な名前である[Anonymous] としてリストに表示されます。

Internet Explorer で動作する Web アプリケーション内のJavaScript のパフォーマンスを改良する際に、このプロファイラーが重宝されることを期待しています。

ありがとうございました。

Sameer Chabungbam
Program Manager

 

ページのトップへページのトップへ