Перейти к содержимому

Performance

Таймеры высокого разрешения, метки, измерения и наблюдатели.

На этой странице
Open in ChatGPTOpen in Claude

Глобальный объект 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

ExportKindStatusNotes
PerformanceEntryclassFullname, entryType, startTime, duration, detail, toJSON()
PerformanceMarkclassFulldetail
PerformanceMeasureclassFulldetail
PerformanceObserverEntryListclassFullgetEntries(), getEntriesByName(), getEntriesByType()
PerformanceObserverclassFullobserve(), disconnect(), takeRecords(), PerformanceObserver.supportedEntryTypes
PerformanceclassFullnow(), timeOrigin, mark(), measure(), getEntries(), getEntriesByName(), getEntriesByType(), clearMarks(), clearMeasures(), toJSON()

Была ли эта страница полезной?