Performance: measure() Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die measure() Methode erstellt ein benanntes PerformanceMeasure Objekt, das eine Zeitmessung zwischen zwei Markierungen in der Performance-Zeitleiste des Browsers darstellt.

Beim Messen zwischen zwei Markierungen gibt es entsprechend eine Startmarkierung und eine Endmarkierung. Der benannte Zeitstempel wird als Messung bezeichnet.

Syntax

js
measure(measureName)
measure(measureName, startMark)
measure(measureName, startMark, endMark)
measure(measureName, measureOptions)
measure(measureName, measureOptions, endMark)

Wenn nur measureName angegeben ist, wird der Startzeitstempel auf Null gesetzt und der Endzeitstempel (der zur Berechnung der Dauer verwendet wird) ist der Wert, der von Performance.now() zurückgegeben würde.

Sie können Zeichenfolgen verwenden, um PerformanceMark Objekte als Start- und Endmarkierungen zu identifizieren.

Um nur eine endMark bereitzustellen, müssen Sie ein leeres measureOptions-Objekt bereitstellen: performance.measure("myMeasure", {}, "myEndMarker").

Parameter

measureName

Eine Zeichenfolge, die den Namen der Messung darstellt.

measureOptions Optional

Ein Objekt, das Messoptionen enthalten kann.

detail Optional

Beliebige Metadaten, die in die Messung einbezogen werden sollen. Standardmäßig null. Muss strukturklonierbar sein.

start Optional

Zeitstempel (DOMHighResTimeStamp), der als Startzeit verwendet wird, oder eine Zeichenfolge, die eine PerformanceMark bezeichnet, die als Startzeit verwendet wird.

Wenn dies eine Zeichenfolge ist, die eine PerformanceMark bezeichnet, ist sie auf die gleiche Weise wie startMark definiert.

duration Optional

Dauer (in Millisekunden) zwischen den Start- und Endmarkierungen. Wenn weggelassen, wird dies standardmäßig auf performance.now() gesetzt; die seit der Erstellung des Kontexts vergangene Zeit. Wenn angegeben, müssen Sie entweder start oder end angeben, aber nicht beides.

end Optional

Zeitstempel (DOMHighResTimeStamp), der als Endzeit verwendet wird, oder eine Zeichenfolge, die eine PerformanceMark bezeichnet, die als Endzeit verwendet werden soll.

Wenn dies eine Zeichenfolge ist, die eine PerformanceMark bezeichnet, ist sie auf die gleiche Weise wie endMark definiert.

startMark Optional

Eine Zeichenfolge, die eine PerformanceMark in der Performance-Zeitleiste bezeichnet. Die PerformanceEntry.startTime Eigenschaft dieser Markierung wird zur Berechnung der Messung verwendet.

endMark Optional

Eine Zeichenfolge, die eine PerformanceMark in der Performance-Zeitleiste bezeichnet. Die PerformanceEntry.startTime Eigenschaft dieser Markierung wird zur Berechnung der Messung verwendet. Wenn Sie dieses Argument übergeben möchten, müssen Sie entweder startMark oder ein leeres measureOptions-Objekt ebenfalls übergeben.

Rückgabewert

Der PerformanceMeasure Eintrag, der erstellt wurde.

Die zurückgegebene Messung wird die folgenden Eigenschaftswerte haben:

  • entryType - auf "measure" gesetzt.

  • name - auf das name-Argument gesetzt.

  • startTime - gesetzt auf:

    • einen timestamp, wenn in measureOptions.start angegeben.
    • den timestamp einer Startmarkierung, wenn in measureOptions.start oder startMark angegeben
    • einen Timestamp, der aus measureOptions.end und measureOptions.duration berechnet wird (wenn measureOptions.start nicht angegeben wurde)
    • 0, wenn es nicht angegeben ist und nicht aus anderen Werten bestimmt werden kann.
  • duration - auf einen DOMHighResTimeStamp gesetzt, der die Dauer der Messung durch Subtraktion des startTime vom Endzeitstempel darstellt.

    Der Endzeitstempel ist einer der folgenden:

    • ein timestamp, wenn in measureOptions.end angegeben.
    • der timestamp einer Endmarkierung, wenn eine in measureOptions.end oder endMark angegeben ist
    • ein Timestamp, der aus measureOptions.start und measureOptions.duration berechnet wird (wenn measureOptions.end nicht angegeben wurde)
    • der von Performance.now() zurückgegebene Wert, wenn keine Endmarkierung angegeben oder aus anderen Werten bestimmt werden kann.
  • detail - auf den in measureOptions übergebenen Wert gesetzt.

Ausnahmen

TypeError

Diese Ausnahme kann in jedem Fall ausgelöst werden, bei dem der Start, das Ende oder die Dauer unklar sein könnten:

  • Sowohl endMark als auch measureOptions sind angegeben.
  • measureOptions ist mit duration angegeben, aber ohne entweder start oder end anzugeben.
  • measureOptions ist mit allen von start, end und duration angegeben.
SyntaxError DOMException

Die benannte Markierung existiert nicht.

  • Eine Endmarke wird entweder mit endMark oder measureOptions.end angegeben, aber es gibt keine PerformanceMark im Performance-Puffer mit dem entsprechenden Namen.
  • Eine Endmarke wird entweder mit endMark oder measureOptions.end angegeben, kann aber nicht so konvertiert werden, dass sie einem schreibgeschützten Attribut in der PerformanceTiming Schnittstelle entspricht.
  • Eine Startmarke wird entweder mit startMark oder measureOptions.start angegeben, aber es gibt keine PerformanceMark im Performance-Puffer mit dem entsprechenden Namen.
  • Eine Startmarke wird entweder mit startMark oder measureOptions.start angegeben, kann aber nicht so konvertiert werden, dass sie einem schreibgeschützten Attribut in der PerformanceTiming Schnittstelle entspricht.
DataCloneError DOMException

Der measureOptions.detail Wert ist nicht-null und kann nicht mit dem HTML-"StructuredSerialize"-Algorithmus serialisiert werden.

RangeError

Der measureOptions.detail Wert ist nicht-null und es kann während der Serialisierung mithilfe des HTML "StructuredSerialize"-Algorithmus kein Speicher zugewiesen werden.

Beispiele

Messung der Dauer zwischen benannten Markierungen

Angenommen, Sie haben zwei eigene Markierungen, "login-started" und "login-finished", können Sie eine Messung namens "login-duration" erstellen, wie im folgenden Beispiel gezeigt. Das zurückgegebene PerformanceMeasure Objekt wird dann eine duration Eigenschaft bereitstellen, um Ihnen die vergangene Zeit zwischen den beiden Markierungen mitzuteilen.

js
const loginMeasure = performance.measure(
  "login-duration",
  "login-started",
  "login-finished",
);
console.log(loginMeasure.duration);

Messung der Dauer mit benutzerdefinierten Start- und Endzeiten

Um fortgeschrittenere Messungen durchzuführen, können Sie einen measureOptions Parameter übergeben. Beispielsweise können Sie die event.timeStamp Eigenschaft von einem click event als Startzeit verwenden.

js
performance.measure("login-click", {
  start: myClickEvent.timeStamp,
  end: myMarker.startTime,
});

Zusätzliche Messdetails bereitstellen

Sie können die details Eigenschaft verwenden, um zusätzliche Informationen jeglicher Art bereitzustellen. Vielleicht möchten Sie beispielsweise aufzeichnen, welches HTML-Element angeklickt wurde.

js
performance.measure("login-click", {
  detail: { htmlElement: myElement.id },
  start: myClickEvent.timeStamp,
  end: myMarker.startTime,
});

Spezifikationen

Specification
User Timing Level 3
# dom-performance-measure

Browser-Kompatibilität

BCD tables only load in the browser