概要
[パフォーマンス] パネルは、パフォーマンス拡張 API をサポートしています。この API を使用すると、独自のカスタムデータをパフォーマンス タイムラインに追加できます。
この API は既存の User Timings API を活用し、カスタム トラックまたは [タイミング] トラックとしてパフォーマンス タイムラインに測定値とイベントを直接挿入できます。これは、カスタム計測機能を使用するフレームワーク、ライブラリ、複雑なアプリケーションのデベロッパーが、パフォーマンスをより包括的に把握するために役立ちます。
主な機能
- カスタム トラック: 専用のトラックを作成して、独自の時間ベースのデータを可視化します。
- エントリ: イベントや測定値を表すエントリをトラックに入力します。
- ツールチップと詳細: カスタマイズ可能なツールチップと詳細ビューを使用して、エントリに豊富なコンテキストを提供します。
- マーカー: タイムライン内の特定の瞬間を視覚的なマーカーでハイライトします。
User Timings API を使用してデータを挿入する
カスタムデータを挿入するには、performance.mark
メソッドと performance.measure
メソッドの detail
プロパティ内に devtools
オブジェクトを含めます。この devtools
オブジェクトの構造によって、[パフォーマンス] パネルにデータが表示される仕組みが決まります。
performance.mark
を使用すると、タイムラインに即時イベントまたはタイムスタンプを記録できます。特定のオペレーションの開始または終了、または所要時間のないスポットの開始または終了をマークできます。detail
プロパティ内にdevtools
オブジェクトを含めると、[パフォーマンス] パネルの [タイミング] トラックにカスタム マーカーが表示されます。タスクまたはプロセスの所要時間を測定するには、
performance.measure
を使用します。detail
プロパティ内にdevtools
オブジェクトを含めると、[パフォーマンス] パネルのカスタム トラックのタイムラインにカスタム測定エントリが表示されます。performance.mark
を参照ポイントとしてperformance.measure
を作成する場合は、performance.mark
呼び出しにdevtools
オブジェクトを含める必要はありません。
devtools
オブジェクト
これらのタイプは、さまざまな拡張機能の devtools
オブジェクトの構造を定義します。
type DevToolsColor =
"primary" | "primary-light" | "primary-dark" |
"secondary" | "secondary-light" | "secondary-dark" |
"tertiary" | "tertiary-light" | "tertiary-dark" |
"error";
interface ExtensionTrackEntryPayload {
dataType?: "track-entry"; // Defaults to "track-entry"
color?: DevToolsColor; // Defaults to "primary"
track: string; // Required: Name of the custom track
trackGroup?: string; // Optional: Group for organizing tracks
properties?: [string, string][]; // Key-value pairs for detailed view
tooltipText?: string; // Short description for tooltip
}
interface ExtensionMarkerPayload {
dataType: "marker"; // Required: Identifies as a marker
color?: DevToolsColor; // Defaults to "primary"
properties?: [string, string][]; // Key-value pairs for detailed view
tooltipText?: string; // Short description for tooltip
}
タイムラインでデータを表示する
タイムラインにカスタムデータを表示するには、[パフォーマンス] パネルで、
[キャプチャ設定] > [拡張データ] をオンにします。こちらのデモページでお試しください。[拡張機能データ] をオンにしてパフォーマンス レコーディングを開始し、デモページで [新しいコーギーを追加] をクリックして、レコーディングを停止します。トレース内にカスタム トラックが表示され、[概要] タブにカスタム ツールチップと詳細が含まれるイベントが表示されます。
コードの例
次のセクションでは、パフォーマンス タイムラインに以下を追加する方法を示したコードの例をご覧ください。
カスタム トラックとエントリ
カスタム トラックを作成してエントリを入力すると、カスタム トラックでパフォーマンス データを可視化できます。次に例を示します。
// Mark used to represent the start of the image processing task
// The start time is defaulted to now
performance.mark("Image Processing Start");
// ... later in your code
// Track entry representing the completion of image processing
// with additional details and a tooltip
// The start time is a marker from earlier
// The end time is defaulted to now
performance.measure("Image Processing Complete", {
start: "Image Processing Start",
detail: {
devtools: {
dataType: "track-entry",
track: "Image Processing Tasks",
trackGroup: "My Tracks", // Group related tracks together
color: "tertiary-dark",
properties: [
["Filter Type", "Gaussian Blur"],
["Resize Dimensions", "500x300"]
],
tooltipText: "Image processed successfully"
}
}
});
これにより、パフォーマンス タイムラインに次のようなカスタム トラック エントリが、ツールチップ テキストとプロパティとともに表示されます。
マーカー
すべてのトラックにまたがるカスタム マーカーを使用して、タイムライン内の特定の注目ポイントを視覚的にハイライト表示します。次に例を示します。
// Marker indicating when the processed image was uploaded
performance.mark("Image Upload", {
detail: {
devtools: {
dataType: "marker",
color: "secondary",
properties: [
["Image Size", "2.5MB"],
["Upload Destination", "Cloud Storage"]
],
tooltipText: "Processed image uploaded"
}
}
});
これにより、タイミング トラックに、ツールチップ テキストとプロパティとともに次のマーカーが追加されます。