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.
measureOptions
Optional-
Ein Objekt, das Messoptionen enthalten kann.
detail
Optional-
Beliebige Metadaten, die in die Messung aufgenommen werden sollen. Standardmäßig
null
. Muss strukturierbar klonbar sein. start
Optional-
Zeitstempel (
DOMHighResTimeStamp
), der als Startzeit verwendet werden soll, oder ein String, der einenPerformanceMark
benennt, der als Startzeit verwendet wird.Wenn dies ein String ist, der einen
PerformanceMark
benennt, dann ist er auf die gleiche Weise wiestartMark
definiert. duration
Optional-
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 entwederstart
oderend
angeben, aber nicht beide. end
Optional-
Zeitstempel (
DOMHighResTimeStamp
), der als Endzeit verwendet werden soll, oder ein String, der einenPerformanceMark
benennt, der als Endzeit verwendet wird.Wenn dies ein String ist, der einen
PerformanceMark
benennt, dann ist er auf die gleiche Weise wieendMark
definiert.
startMark
Optional-
Ein String, der einen
PerformanceMark
in der Leistungstimeline benennt. DiePerformanceEntry.startTime
-Eigenschaft dieses Markers wird zur Berechnung der Messung verwendet. endMark
Optional-
Ein String, der einen
PerformanceMark
in der Leistungstimeline benennt. DiePerformanceEntry.startTime
-Eigenschaft dieses Markers wird zur Berechnung der Messung verwendet. Um dieses Argument zu übergeben, müssen Sie entwederstartMark
oder 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.start
angegeben. - den
timestamp
eines Startmarkers, wenn immeasureOptions.start
oderstartMark
angegeben. - einen Zeitstempel, der aus dem
measureOptions.end
undmeasureOptions.duration
berechnet wird (wennmeasureOptions.start
nicht angegeben wurde). - 0, wenn er nicht angegeben ist und nicht aus anderen Werten bestimmt werden kann.
- einen
-
duration
- auf einenDOMHighResTimeStamp
gesetzt, der die Dauer der Messung ist, berechnet durch Subtraktion derstartTime
vom Endzeitstempel.Der Endzeitstempel ist einer der folgenden:
- ein
timestamp
, wenn immeasureOptions.end
angegeben. - der
timestamp
eines Endmarkers, wenn einer immeasureOptions.end
oderendMark
angegeben ist. - ein Zeitstempel, der aus dem
measureOptions.start
undmeasureOptions.duration
berechnet wird (wennmeasureOptions.end
nicht 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
endMark
als auchmeasureOptions
sind angegeben. measureOptions
ist angegeben mitduration
, jedoch ohne Angabe von entwederstart
oderend
.measureOptions
ist angegeben mit allenstart
,end
undduration
.
- Sowohl
SyntaxError
DOMException
-
Der benannte Marker existiert nicht.
- Ein Endmarker wird entweder durch
endMark
odermeasureOptions.end
angegeben, aber es gibt keinenPerformanceMark
im Leistungsbuffer mit dem passenden Namen. - Ein Endmarker wird entweder durch
endMark
odermeasureOptions.end
angegeben, aber er kann nicht so konvertiert werden, dass er zu einem schreibgeschützten Attribut imPerformanceTiming
-Interface passt. - Ein Startmarker wird entweder durch
startMark
odermeasureOptions.start
angegeben, aber es gibt keinenPerformanceMark
im Leistungsbuffer mit dem passenden Namen. - Ein Startmarker wird entweder durch
startMark
odermeasureOptions.start
angegeben, aber er kann nicht so konvertiert werden, dass er zu einem schreibgeschützten Attribut imPerformanceTiming
-Interface passt.
- Ein Endmarker wird entweder durch
DataCloneError
DOMException
-
Der
measureOptions.detail
-Wert ist nichtnull
und kann nicht mit dem HTML-Algorithmus 'StructuredSerialize' serialisiert werden. RangeError
-
Der
measureOptions.detail
-Wert ist nichtnull
und 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 |