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 2017.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die measure()-Methode erstellt ein benanntes PerformanceMeasure-Objekt, das eine Zeitmessung zwischen zwei Markern in der Leistungstimeline des Browsers darstellt.
Beim Messen zwischen zwei Markern gibt es einen Startmarker und einen Endmarker. 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 Endmarker zu identifizieren.
Um nur einen endMark anzugeben, müssen Sie ein leeres measureOptions-Objekt bereitstellen:
performance.measure("myMeasure", {}, "myEndMarker").
Parameter
measureName-
Ein String, der den Namen der Messung darstellt.
measureOptionsOptional-
Ein Objekt, das Messoptionen enthalten kann.
detailOptional-
Beliebige Metadaten, die in die Messung aufgenommen werden sollen. Standardmäßig
null. Muss strukturierbar klonbar sein. startOptional-
Zeitstempel (
DOMHighResTimeStamp), der als Startzeit verwendet werden soll, oder ein String, der einenPerformanceMarkbenennt, der als Startzeit verwendet wird.Wenn dies ein String ist, der einen
PerformanceMarkbenennt, dann ist er auf die gleiche Weise wiestartMarkdefiniert. durationOptional-
Dauer (in Millisekunden) zwischen den Start- und Endzeitpunkten. Wenn weggelassen, wird dies standardmäßig auf
performance.now()gesetzt; die Zeit, die seit Erstellung des Kontexts vergangen ist. Wenn angegeben, müssen Sie entwederstartoderendangeben, aber nicht beide. endOptional-
Zeitstempel (
DOMHighResTimeStamp), der als Endzeit verwendet werden soll, oder ein String, der einenPerformanceMarkbenennt, der als Endzeit verwendet wird.Wenn dies ein String ist, der einen
PerformanceMarkbenennt, dann ist er auf die gleiche Weise wieendMarkdefiniert.
startMarkOptional-
Ein String, der einen
PerformanceMarkin der Leistungstimeline benennt. DiePerformanceEntry.startTime-Eigenschaft dieses Markers wird zur Berechnung der Messung verwendet. endMarkOptional-
Ein String, der einen
PerformanceMarkin der Leistungstimeline benennt. DiePerformanceEntry.startTime-Eigenschaft dieses Markers wird zur Berechnung der Messung verwendet. Um dieses Argument zu übergeben, müssen Sie entwederstartMarkoder ein leeresmeasureOptions-Objekt übergeben.
Rückgabewert
Der erstellte PerformanceMeasure-Eintrag.
Die zurückgegebene Messung hat folgende Eigenschaftswerte:
-
entryType- auf"measure"gesetzt. -
name- auf dasname-Argument gesetzt. -
startTime- gesetzt auf:- einen
timestamp, wenn immeasureOptions.startangegeben. - den
timestampeines Startmarkers, wenn immeasureOptions.startoderstartMarkangegeben. - einen Zeitstempel, der aus dem
measureOptions.endundmeasureOptions.durationberechnet wird (wennmeasureOptions.startnicht angegeben wurde). - 0, wenn er nicht angegeben ist und nicht aus anderen Werten bestimmt werden kann.
- einen
-
duration- auf einenDOMHighResTimeStampgesetzt, der die Dauer der Messung ist, berechnet durch Subtraktion derstartTimevom Endzeitstempel.Der Endzeitstempel ist einer der folgenden:
- ein
timestamp, wenn immeasureOptions.endangegeben. - der
timestampeines Endmarkers, wenn einer immeasureOptions.endoderendMarkangegeben ist. - ein Zeitstempel, der aus dem
measureOptions.startundmeasureOptions.durationberechnet wird (wennmeasureOptions.endnicht angegeben wurde). - der von
Performance.now()zurückgegebene Wert, wenn kein Endmarker angegeben ist oder aus anderen Werten bestimmt werden kann.
- ein
-
detail- auf den immeasureOptionsübergebenen Wert gesetzt.
Ausnahmen
TypeError-
Dies kann in jedem Fall geworfen werden, in dem der Start, das Ende oder die Dauer mehrdeutig sein könnten:
- Sowohl
endMarkals auchmeasureOptionssind angegeben. measureOptionsist angegeben mitduration, jedoch ohne Angabe von entwederstartoderend.measureOptionsist angegeben mit allenstart,endundduration.
- Sowohl
SyntaxErrorDOMException-
Der benannte Marker existiert nicht.
- Ein Endmarker wird entweder durch
endMarkodermeasureOptions.endangegeben, aber es gibt keinenPerformanceMarkim Leistungsbuffer mit dem passenden Namen. - Ein Endmarker wird entweder durch
endMarkodermeasureOptions.endangegeben, aber er kann nicht so konvertiert werden, dass er zu einem schreibgeschützten Attribut imPerformanceTiming-Interface passt. - Ein Startmarker wird entweder durch
startMarkodermeasureOptions.startangegeben, aber es gibt keinenPerformanceMarkim Leistungsbuffer mit dem passenden Namen. - Ein Startmarker wird entweder durch
startMarkodermeasureOptions.startangegeben, aber er kann nicht so konvertiert werden, dass er zu einem schreibgeschützten Attribut imPerformanceTiming-Interface passt.
- Ein Endmarker wird entweder durch
DataCloneErrorDOMException-
Der
measureOptions.detail-Wert ist nichtnullund kann nicht mit dem HTML-Algorithmus 'StructuredSerialize' serialisiert werden. RangeError-
Der
measureOptions.detail-Wert ist nichtnullund Speicher kann während der Serialisierung mit dem HTML-Algorithmus 'StructuredSerialize' nicht zugewiesen werden.
Beispiele
>Messung der Dauer zwischen benannten Markern
Gegeben seien zwei Ihrer eigenen Marker "login-started" und "login-finished", so können Sie eine Messung namens "login-duration" erstellen, wie im folgenden Beispiel gezeigt. Das zurückgegebene PerformanceMeasure-Objekt wird Ihnen dann eine duration-Eigenschaft zur Verfügung stellen, um die verstrichene Zeit zwischen den beiden Markern anzugeben.
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 aus einem click-Ereignis als Startzeit verwenden.
performance.measure("login-click", {
start: myClickEvent.timeStamp,
end: myMarker.startTime,
});
Bereitstellung zusätzlicher Messdetails
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> # dom-performance-measure> |
Browser-Kompatibilität
Loading…