Глобальный объект performance и node:perf_hooks используют общую временную шкалу.
Время и записи
performance.now(); // milliseconds since timeOrigin
performance.mark("start");
performance.measure("work", "start");
performance.getEntriesByName("work")[0].entryType; // "measure"getEntries(), getEntriesByName() и getEntriesByType() возвращают
новые массивы, отсортированные по времени начала. clearMarks() и clearMeasures()
удаляют совпадающие записи.
PerformanceMark можно создать через конструктор. Performance,
PerformanceEntry и PerformanceMeasure напрямую создать
нельзя.
PerformanceObserver
const observer = new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
console.log(entry.name, entry.entryType);
}
});
observer.observe({ entryTypes: ["mark", "measure"] });
performance.mark("ready");Доставка наблюдателю происходит в контрольной точке микрозадач. disconnect() прекращает
наблюдение и очищает буферизованные записи; takeRecords() опустошает текущий
буфер.
PerformanceObserver.supportedEntryTypes содержит mark,
measure, node и function.
Значения detail у меток и измерений используют то же поведение structured clone, что и
Web Messaging. Такие типы, как Date, RegExp,
Map, Set и ArrayBuffer, сохраняют тип и содержимое; функции приводят к
DataCloneError.
Reference
Status: Full · Not measured · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
PerformanceEntry | class | Full | name, entryType, startTime, duration, detail, toJSON() |
PerformanceMark | class | Full | detail |
PerformanceMeasure | class | Full | detail |
PerformanceObserverEntryList | class | Full | getEntries(), getEntriesByName(), getEntriesByType() |
PerformanceObserver | class | Full | observe(), disconnect(), takeRecords(), PerformanceObserver. |
Performance | class | Full | now(), timeOrigin, mark(), measure(), getEntries(), getEntriesByName(), getEntriesByType(), clearMarks(), clearMeasures(), toJSON() |