performance.measure()
measure() メソッドは、マーク間、ナビゲーション開始時刻、または現在時刻の間に、ブラウザーのパフォーマンスエントリーバッファーに名前付き timestamp を作成します。
2 つのマーク間を測定するときは、それぞれ開始マークと終了マークがあります。名前付きタイムスタンプは、メジャーと呼ばれます。
measure は、Performance インターフェイスのうち、
(getEntries(),
getEntriesByName(),
getEntriesByType()) のいずれかを使用して取得できます。
注: この機能は Web Worker 内で利用可能です
構文
js
measure(measureName)
measure(measureName, MeasureOptions)
measure(measureName, startMark)
measure(measureName, startMark, endMark)
measureName のみが指定された場合、開始タイムスタンプはゼロに設定され、(時間を計算するために使用される)終了タイムスタンプは Performance.now() から返される値になります。
引数
measureName-
DOMStringで、メジャーの名前を表します。 MeasureOptions省略可-
メジャーのすべてのオプションを含むオブジェクトです(
startMarkとendMarkはこのオブジェクト内で指定することも、独自の引数で指定することもできます)。detail-
メジャーに含める任意のメタデータです。
start-
開始時刻として使用される
DOMHighResTimeStampのタイムスタンプ、または開始マークとして使用されるDOMStringです。 これが開始マークの名前を表す場合は、startMarkの場合と同じように定義します(すなわち、既存のマークまたはPerformanceTimingプロパティの名前でなければなりません)。 duration-
開始マークと終了マークのそれぞれの時刻 (
DOMHighResTimeStamp) 間の時間. end-
終了時刻として使用される
DOMHighResTimeStampのタイムスタンプ、または終了マークとして使用されるDOMStringです。 これが終了マークの名前を表す場合は、endMarkの場合と同じように定義します(すなわち、既存のマークまたはPerformanceTimingプロパティの名前でなければなりません)。
startMark省略可-
DOMStringで、このメジャーの開始マークの名前を表します。PerformanceTimingプロパティの名前にすることもできます。 既存のPerformanceMarkまたはPerformanceTimingを表していない名前を指定するとSyntaxErrorのDOMExceptionが発生します。 endMark省略可-
DOMStringで、このメジャーの終了マークの名前を表します。PerformanceTimingプロパティの名前にすることもできます。 既存のPerformanceMarkまたはPerformanceTimingを表していない名前を指定するとSyntaxErrorのDOMExceptionが発生します。
返値
生成された PerformanceMeasure のエントリーです。
返されるメジャーには、以下のプロパティ値になります。
entryType- "measure" が設定されます。name- "name" 引数が設定されます。startTime- 以下のように設定されます。-
duration-DOMHighResTimeStampで、終了タイムスタンプからstartTimeを引いて計算されたメジャーの時間を設定します。 終了タイムスタンプは以下のいずれかになります。MeasureOptions.endで指定された場合はtimestamp。MeasureOptions.endまたはendMarkで指定された場合は、終了マークのタイムスタンプ。MeasureOptions.startとMeasureOptions.durationから計算されたタイムスタンプ(MeasureOptions.endが指定されていない場合)。- 終了マークが指定されていないか、他の値から特定することができない場合は、
Performance.now()で返される値。
detail-MeasureOptionsで渡された値に設定されます。
例外
TypeErrorDOMException-
start, end, duration の何れかが曖昧になる場合に発生します。
endMarkとMeasureOptionsの両方が指定された。MeasureOptionsが指定されたが、startおよびendメンバーが指定されなかった。MeasureOptionsがstart,end,durationのメンバーすべてある状態(そして不整合な状態)で指定された。
SyntaxErrorDOMException-
その名前のマークが存在しない場合に発生します。
endMarkまたはMeasureOptions.endのどちらかを使用してエンドマークが指定されたが、一致する名前のパフォーマンスバッファーにPerformanceMarkがない。endMarkまたはMeasureOptions.endのどちらかを使用してエンドマークが指定されたが、PerformanceTimingインターフェイスの読み取り専用属性に変換することができない。- 開始マークが
startMarkまたはMeasureOptions.startのどちらかで指定されているが、一致する名前のパフォーマンスバッファーにPerformanceMarkがない。 - 開始マークが
startMarkまたはMeasureOptions.startのどちらかで指定されているが、PerformanceTimingインターフェイスの読み取り専用属性に変換することができない。
DataCloneErrorDOMException-
MeasureOptions.detailがnull以外の値であり、 HTML の "StructuredSerialize" アルゴリズムでシリアライズできない場合です。 RangeError-
MeasureOptions.detailがnull以外の値であり、 HTML の "StructuredSerialize" アルゴリズムでシリアライズする際にメモリーが割り当てられなかった場合です。
例
次の例は、ブラウザーのパフォーマンスエントリーバッファーに measure() を使用して新しいメジャーパフォーマンスエントリーを作成する方法を示しています。
js
const markerNameA = "example-marker-a"
const markerNameB = "example-marker-b"
// いくつかのネストしたタイムアウトを実行し、それぞれに対して PerformanceMark を作成します。
performance.mark(markerNameA);
setTimeout(function() {
performance.mark(markerNameB);
setTimeout(function() {
// さまざまな測定値を作成します。
performance.measure("measure a to b", markerNameA, markerNameB);
performance.measure("measure a to now", markerNameA);
performance.measure("measure from navigation start to b", undefined, markerNameB);
performance.measure("measure from the start of navigation to now");
// すべての測定値を引き出します。
console.log(performance.getEntriesByType("measure"));
// 最後に、エントリ-
を整理します。
performance.clearMarks();
performance.clearMeasures();
}, 1000);
}, 1000);
仕様書
| Specification |
|---|
| User Timing # dom-performance-measure |
ブラウザーの互換性
BCD tables only load in the browser