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: Dieses Feature ist verfügbar in Web Workers.
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
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 einePerformanceMark
bezeichnet, die als Startzeit verwendet wird.Wenn dies eine Zeichenfolge ist, die eine
PerformanceMark
bezeichnet, ist sie auf die gleiche Weise wiestartMark
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 entwederstart
oderend
angeben, aber nicht beides. end
Optional-
Zeitstempel (
DOMHighResTimeStamp
), der als Endzeit verwendet wird, oder eine Zeichenfolge, die einePerformanceMark
bezeichnet, die als Endzeit verwendet werden soll.Wenn dies eine Zeichenfolge ist, die eine
PerformanceMark
bezeichnet, ist sie auf die gleiche Weise wieendMark
definiert.
startMark
Optional-
Eine Zeichenfolge, die eine
PerformanceMark
in der Performance-Zeitleiste bezeichnet. DiePerformanceEntry.startTime
Eigenschaft dieser Markierung wird zur Berechnung der Messung verwendet. endMark
Optional-
Eine Zeichenfolge, die eine
PerformanceMark
in der Performance-Zeitleiste bezeichnet. DiePerformanceEntry.startTime
Eigenschaft dieser Markierung wird zur Berechnung der Messung verwendet. Wenn Sie dieses Argument übergeben möchten, müssen Sie entwederstartMark
oder ein leeresmeasureOptions
-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 dasname
-Argument gesetzt. -
startTime
- gesetzt auf:- einen
timestamp
, wenn inmeasureOptions.start
angegeben. - den
timestamp
einer Startmarkierung, wenn inmeasureOptions.start
oderstartMark
angegeben - einen Timestamp, der aus
measureOptions.end
undmeasureOptions.duration
berechnet wird (wennmeasureOptions.start
nicht angegeben wurde) - 0, wenn es nicht angegeben ist und nicht aus anderen Werten bestimmt werden kann.
- einen
-
duration
- auf einenDOMHighResTimeStamp
gesetzt, der die Dauer der Messung durch Subtraktion desstartTime
vom Endzeitstempel darstellt.Der Endzeitstempel ist einer der folgenden:
- ein
timestamp
, wenn inmeasureOptions.end
angegeben. - der
timestamp
einer Endmarkierung, wenn eine inmeasureOptions.end
oderendMark
angegeben ist - ein Timestamp, der aus
measureOptions.start
undmeasureOptions.duration
berechnet wird (wennmeasureOptions.end
nicht angegeben wurde) - der von
Performance.now()
zurückgegebene Wert, wenn keine Endmarkierung angegeben oder aus anderen Werten bestimmt werden kann.
- ein
-
detail
- auf den inmeasureOptions
ü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 auchmeasureOptions
sind angegeben. measureOptions
ist mitduration
angegeben, aber ohne entwederstart
oderend
anzugeben.measureOptions
ist mit allen vonstart
,end
undduration
angegeben.
- Sowohl
SyntaxError
DOMException
-
Die benannte Markierung existiert nicht.
- Eine Endmarke wird entweder mit
endMark
odermeasureOptions.end
angegeben, aber es gibt keinePerformanceMark
im Performance-Puffer mit dem entsprechenden Namen. - Eine Endmarke wird entweder mit
endMark
odermeasureOptions.end
angegeben, kann aber nicht so konvertiert werden, dass sie einem schreibgeschützten Attribut in derPerformanceTiming
Schnittstelle entspricht. - Eine Startmarke wird entweder mit
startMark
odermeasureOptions.start
angegeben, aber es gibt keinePerformanceMark
im Performance-Puffer mit dem entsprechenden Namen. - Eine Startmarke wird entweder mit
startMark
odermeasureOptions.start
angegeben, kann aber nicht so konvertiert werden, dass sie einem schreibgeschützten Attribut in derPerformanceTiming
Schnittstelle entspricht.
- Eine Endmarke wird entweder mit
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.
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.
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.
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