API измерения производительности¶
Стабильность: 2 – Стабильная
АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.
Этот модуль предоставляет реализацию подмножества W3C Web Performance APIs, а также дополнительные API для специфических для Node.js измерений производительности.
Node.js поддерживает следующие Web Performance APIs:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
perf_hooks.performance
.¶
Объект, который можно использовать для сбора показателей производительности текущего экземпляра Node.js. Он аналогичен window.performance
в браузерах.
performance.clearMarks([name])
¶
имя
<string>
Если name
не указано, удаляет все объекты PerformanceMark
с временной шкалы производительности. Если имя
указано, удаляется только именованная метка.
performance.clearMeasures([name])
.¶
имя
<string>
Если name
не указано, удаляет все объекты PerformanceMeasure
из временной шкалы производительности. Если имя
указано, удаляется только названная мера.
performance.clearResourceTimings([name])
¶
name
<string>
Если name
не указано, удаляет все объекты PerformanceResourceTiming
из временной шкалы ресурсов. Если имя
указано, удаляется только именованный ресурс.
performance.eventLoopUtilization([utilization1[, utilization2]])
¶
utilization1
<Object>
Результат предыдущего вызоваeventLoopUtilization()
.utilization2
<Object>
Результат предыдущего вызоваeventLoopUtilization()
передutilization1
.- Возвращает
<Object>
Метод eventLoopUtilization()
возвращает объект, содержащий суммарную продолжительность времени, в течение которого цикл событий был как холост, так и активен, в виде таймера с высоким разрешением в миллисекундах. Значение utilization
- это вычисленная утилита цикла событий (ELU).
Если загрузка еще не завершилась в основном потоке, свойства имеют значение 0
. ELU немедленно доступно на Worker threads, поскольку бутстрап происходит внутри цикла событий.
Оба параметра utilization1
и utilization2
являются необязательными.
Если передан параметр utilization1
, то вычисляется и возвращается дельта между временем active
и idle
текущего вызова, а также соответствующее значение utilization
(аналогично process.hrtime()
).
Если переданы значения utilization1
и utilization2
, то вычисляется дельта между двумя аргументами. Это удобная опция, поскольку, в отличие от process.hrtime()
, вычисление ELU сложнее, чем простое вычитание.
ELU аналогичен утилизации процессора, за исключением того, что он измеряет только статистику циклов событий, а не использование процессора. Он представляет собой процент времени, которое цикл событий провел вне провайдера событий цикла (например, epoll_wait
). Никакое другое время простоя ЦП не учитывается. Ниже приведен пример того, как в основном простаивающий процесс будет иметь высокий ELU.
1 2 3 4 5 6 7 8 9 10 11 |
|
Хотя CPU в основном простаивает во время выполнения этого сценария, значение utilization
равно 1
. Это происходит потому, что вызов child_process.spawnSync()
блокирует выполнение цикла событий.
Передача пользовательского объекта вместо результата предыдущего вызова eventLoopUtilization()
приведет к неопределенному поведению. Возвращаемые значения не гарантированно отражают правильное состояние цикла событий.
performance.getEntries()
.¶
- Возвращает: {PerformanceEntry[]}
Возвращает список объектов PerformanceEntry
в хронологическом порядке относительно performanceEntry.startTime
. Если вас интересуют только записи производительности определенных типов или с определенными именами, смотрите performance.getEntriesByType()
и performance.getEntriesByName()
.
performance.getEntriesByName(name[, type])
¶
Возвращает список объектов PerformanceEntry
в хронологическом порядке относительно performanceEntry.startTime
, чье performanceEntry.name
равно name
, и, опционально, чей performanceEntry.entryType
равен type
.
performance.getEntriesByType(type)
¶
type
<string>
- Возвращает: {PerformanceEntry[]}
Возвращает список объектов PerformanceEntry
в хронологическом порядке относительно performanceEntry.startTime
, чей performanceEntry.entryType
равен type
.
performance.mark(name[, options])
¶
Создает новую запись PerformanceMark
на временной шкале исполнения. PerformanceMark
- это подкласс PerformanceEntry
, чей performanceEntry.entryType
всегда 'mark'
, а performanceEntry.duration
всегда 0
. Метки исполнения используются для обозначения определенных значимых моментов на временной шкале исполнения.
Созданная запись PerformanceMark
помещается в глобальную временную шкалу производительности и может быть запрошена с помощью performance.getEntries
, performance.getEntriesByName
и performance.getEntriesByType
. Когда наблюдение выполнено, записи должны быть удалены из глобальной временной шкалы производительности вручную с помощью performance.clearMarks
.
performance.markResourceTiming(timingInfo, requestedUrl, initiatorType, global, cacheMode)
.¶
timingInfo
<Object>
Fetch Timing InforequestedUrl
<string>
url ресурсаinitiatorType
<string>
Имя инициатора, например: 'fetch'.global
<Object>
cacheMode
<string>
Режим кэширования должен быть пустой строкой ('') или 'local'.
Это свойство является расширением Node.js. Оно недоступно в веб-браузерах.
Создает новую запись PerformanceResourceTiming
на временной шкале ресурсов. PerformanceResourceTiming
является подклассом PerformanceEntry
, чей performanceEntry.entryType
всегда 'resource'
. Ресурсы производительности используются для отметки моментов на временной шкале ресурсов.
Созданная запись PerformanceMark
помещается в глобальную временную шкалу ресурсов и может быть запрошена с помощью performance.getEntries
, performance.getEntriesByName
и performance.getEntriesByType
. Когда наблюдение выполнено, записи должны быть удалены из глобальной временной шкалы производительности вручную с помощью performance.clearResourceTimings
.
performance.measure(name[, startMarkOrOptions[, endMark]])
.¶
имя
<string>
startMarkOrOptions
{string|Object} Необязательно.detail
<any>
Дополнительная необязательная информация для включения в меру.duration
<number>
Продолжительность между начальным и конечным временем.end
<number>
|<string>
Временная метка, которая будет использоваться в качестве времени окончания, или строка, идентифицирующая ранее записанную метку.start
<number>
|<string>
Временная метка, которая будет использоваться в качестве времени начала, или строка, идентифицирующая ранее записанную метку.
endMark
<string>
Необязательно. Должен быть опущен, еслиstartMarkOrOptions
является<Object>
.
Создает новую запись PerformanceMeasure
на временной шкале исполнения. PerformanceMeasure
- это подкласс PerformanceEntry
, чей performanceEntry.entryType
всегда 'measure'
, и чья performanceEntry.duration
измеряет количество миллисекунд, прошедших с startMark
и endMark
.
Аргумент startMark
может определять любую существующую PerformanceMark
на временной шкале производительности, или может определять любое из свойств временной метки, предоставляемых классом PerformanceNodeTiming
. Если именованная startMark
не существует, будет выдана ошибка.
Необязательный аргумент endMark
должен идентифицировать любую существующую PerformanceMark
на временной шкале производительности или любое из свойств временной метки, предоставляемых классом PerformanceNodeTiming
. Если параметр не передан, endMark
будет performance.now()
, в противном случае, если именованная endMark
не существует, будет выдана ошибка.
Созданная запись PerformanceMeasure
помещается в глобальную временную шкалу производительности и может быть запрошена с помощью performance.getEntries
, performance.getEntriesByName
и performance.getEntriesByType
. Когда наблюдение выполнено, записи должны быть удалены из глобальной временной шкалы производительности вручную с помощью performance.clearMeasures
.
performance.nodeTiming
¶
- {PerformanceNodeTiming}
Это свойство является расширением Node.js. Оно недоступно в веб-браузерах.
Экземпляр класса PerformanceNodeTiming
, который предоставляет метрики производительности для определенных этапов работы Node.js.
performance.now()
.¶
- Возвращает:
<number>
Возвращает текущую миллисекундную временную метку высокого разрешения, где 0 означает начало текущего процесса node
.
performance.setResourceTimingBufferSize(maxSize)
.¶
Устанавливает размер глобального буфера синхронизации ресурсов производительности для указанного количества объектов записи производительности типа "ресурс".
По умолчанию максимальный размер буфера установлен на 250.
performance.timeOrigin
¶
timeOrigin
указывает миллисекундную метку времени высокого разрешения, с которой начался текущий процесс node
, измеряемую в Unix-времени.
performance.timerify(fn[, options])
¶
fn
<Function>
options
<Object>
histogram
{RecordableHistogram} Объект гистограммы, созданный с помощьюperf_hooks.createHistogram()
, который будет записывать длительность выполнения в наносекундах.
Это свойство является расширением Node.js. Оно недоступно в веб-браузерах.
Обертывает функцию внутри новой функции, которая измеряет время работы обернутой функции. Чтобы получить доступ к деталям времени, на тип события функция
должен быть подписан PerformanceObserver
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Если обернутая функция возвращает обещание, к обещанию будет присоединен обработчик finally, и продолжительность будет сообщена, когда обработчик finally будет вызван.
performance.toJSON()
.¶
Объект, который является JSON-представлением объекта performance
. Он аналогичен window.performance.toJSON
в браузерах.
Event: 'resourcetimingbufferfull'
¶
Событие 'resourcetimingbufferfull'
происходит, когда глобальный буфер синхронизации ресурсов производительности заполнен. Отрегулируйте размер буфера синхронизации ресурсов с помощью performance.setResourceTimingBufferSize()
или очистите буфер с помощью performance.clearResourceTimings()
в слушателе события, чтобы позволить добавить больше записей в буфер временной шкалы производительности.
Класс: PerformanceEntry
.¶
Конструктор этого класса не доступен пользователям напрямую.
performanceEntry.duration
¶
Общее количество миллисекунд, прошедших для этой записи. Это значение будет иметь смысл не для всех типов Performance Entry.
performanceEntry.entryType
¶
Тип записи выступления. Он может быть одним из:
'node'
(только для Node.js)'mark'
(доступно в Интернете)'measure'
(доступно в Интернете)'gc'
(только для Node.js)'function'
(только для Node.js)'http2'
(только для Node.js)'http'
(только Node.js)
performanceEntry.name
¶
Имя записи производительности.
performanceEntry.startTime
¶
Миллисекундная временная метка высокого разрешения, отмечающая время начала записи Performance Entry.
Класс: PerformanceMark
¶
- Расширяет: {PerformanceEntry}
Раскрывает метки, созданные с помощью метода Performance.mark()
.
performanceMark.detail
¶
Дополнительная деталь, указанная при создании методом Performance.mark()
.
Класс: PerformanceMeasure
¶
- Расширяет: {PerformanceEntry}
Раскрывает меры, созданные с помощью метода Performance.measure()
.
Конструктор этого класса не доступен пользователям напрямую.
performanceMeasure.detail
¶
Дополнительная деталь, указанная при создании методом Performance.measure()
.
Класс: PerformanceNodeEntry
.¶
- Расширяет: {PerformanceEntry}
Этот класс является расширением Node.js. Он недоступен в веб-браузерах.
Предоставляет подробные данные о времени работы Node.js.
Конструктор этого класса не доступен пользователям напрямую.
performanceNodeEntry.detail
¶
Дополнительная информация, специфичная для entryType
.
performanceNodeEntry.flags
¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Используйте performanceNodeEntry.detail
вместо этого.
Когда performanceEntry.entryType
равен 'gc'
, свойство performance.flags
содержит дополнительную информацию об операции сборки мусора. Значение может быть одним из:
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_NO
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_FORCED
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE
performanceNodeEntry.kind
.¶
Стабильность: 0 – устарело или набрало много негативных отзывов
Используйте performanceNodeEntry.detail
вместо этого.
Когда performanceEntry.entryType
равен 'gc'
, свойство performance.kind
идентифицирует тип операции сборки мусора, которая произошла. Значение может быть одним из:
perf_hooks.constants.NODE_PERFORMANCE_GC_MAJOR
.perf_hooks.constants.NODE_PERFORMANCE_GC_MINOR
perf_hooks.constants.NODE_PERFORMANCE_GC_INCREMENTAL
perf_hooks.constants.NODE_PERFORMANCE_GC_WEAKCB
Детали сборки мусора ('gc')¶
Когда performanceEntry.type
равен 'gc'
, свойство performanceNodeEntry.detail
будет <Object>
с двумя свойствами:
kind
<number>
Одно из:perf_hooks.constants.NODE_PERFORMANCE_GC_MAJOR
perf_hooks.constants.NODE_PERFORMANCE_GC_MINOR
perf_hooks.constants.NODE_PERFORMANCE_GC_INCREMENTAL
perf_hooks.constants.NODE_PERFORMANCE_GC_WEAKCB
флаги
<number>
Одно из:perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_NO
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_FORCED
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY
perf_hooks.constants.NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE
Детали HTTP ('http')¶
Если performanceEntry.type
равен 'http'
, свойство performanceNodeEntry.detail
будет <Object>
, содержащим дополнительную информацию.
Если performanceEntry.name
равно HttpClient
, то detail
будет содержать следующие свойства: req
, res
. Причем свойство req
будет <Object>
, содержащим method
, url
, headers
, а свойство res
будет <Object>
, содержащим statusCode
, statusMessage
, headers
.
Если performanceEntry.name
равно HttpRequest
, то detail
будет содержать следующие свойства: req
, res
. Причем свойство req
будет <Object>
, содержащим method
, url
, headers
, а свойство res
будет <Object>
, содержащим statusCode
, statusMessage
, headers
.
Это может привести к дополнительным затратам памяти и должно использоваться только в диагностических целях, а не включаться в production по умолчанию.
Подробности HTTP/2 ('http2')¶
Если performanceEntry.type
равен 'http2'
, свойство performanceNodeEntry.detail
будет представлять собой <Object>
, содержащий дополнительную информацию о производительности.
Если performanceEntry.name
равно Http2Stream
, то detail
будет содержать следующие свойства:
bytesRead
<number>
Количество байтов кадраDATA
, полученных для данногоHttp2Stream
.bytesWritten
<number>
Количество байт кадраDATA
, отправленных для этогоHttp2Stream
.id
<number>
Идентификатор связанногоHttp2Stream
.timeToFirstByte
<number>
Количество миллисекунд, прошедших междуPerformanceEntry
startTime
и получением первогоDATA
кадра.timeToFirstByteSent
<number>
Количество миллисекунд, прошедших междуPerformanceEntry
startTime
и отправкой первого кадраDATA
.timeToFirstHeader
<number>
Количество миллисекунд, прошедших междуPerformanceEntry
startTime
и получением первого заголовка.
Если performanceEntry.name
равно Http2Session
, то detail
будет содержать следующие свойства:
bytesRead
<number>
Количество байт, полученных для данногоHttp2Session
.bytesWritten
<number>
Количество отправленных байт для этойHttp2Session
.framesReceived
<number>
Количество кадров HTTP/2, полученныхHttp2Session
.framesSent
<number>
Количество кадров HTTP/2, отправленныхHttp2Session
.maxConcurrentStreams
<number>
Максимальное количество потоков, одновременно открытых во время жизниHttp2Session
.pingRTT
<number>
Количество миллисекунд, прошедших с момента передачи кадраPING
и получения его подтверждения. Присутствует, только если кадрPING
был отправлен наHttp2Session
.streamAverageDuration
<number>
Средняя продолжительность (в миллисекундах) для всех экземпляровHttp2Stream
.streamCount
<number>
Количество экземпляровHttp2Stream
, обработанныхHttp2Session
.type
<string>
Либосервер
, либоклиент
для идентификации типа `Http2Session``.
Детали таймерификации ('функция')¶
Когда performanceEntry.type
равен 'function'
, свойство performanceNodeEntry.detail
будет представлять собой <Array>
, перечисляющий входные аргументы для функции с таймером.
Net ('net') Details¶
Если performanceEntry.type
равен 'net'
, свойство performanceNodeEntry.detail
будет <Object>
, содержащим дополнительную информацию.
Если performanceEntry.name
равно connect
, то detail
будет содержать следующие свойства: host
, port
.
Детали DNS ('dns')¶
Когда performanceEntry.type
равен 'dns'
, свойство performanceNodeEntry.detail
будет <Object>
, содержащим дополнительную информацию.
Если performanceEntry.name
равно lookup
, то detail
будет содержать следующие свойства: hostname
, family
, hints
, verbatim
, addresses
.
Если performanceEntry.name
равно lookupService
, detail
будет содержать следующие свойства: host
, port
, hostname
, service
.
Если performanceEntry.name
равно queryxxx
или getHostByAddr
, detail
будет содержать следующие свойства: host
, ttl
, result
. Значение result
совпадает с результатом queryxxx
или getHostByAddr
.
Класс: PerformanceNodeTiming
.¶
- Расширяет: {PerformanceEntry}
Это свойство является расширением Node.js. Оно недоступно в веб-браузерах.
Предоставляет сведения о тайминге для самого Node.js. Конструктор этого класса не доступен для пользователей.
performanceNodeTiming.bootstrapComplete
¶
Миллисекундная метка времени высокого разрешения, когда процесс Node.js завершил начальную загрузку. Если бутстраппинг еще не завершен, свойство имеет значение -1.
performanceNodeTiming.environment
¶
Миллисекундная временная метка высокого разрешения, в которой была инициализирована среда Node.js.
performanceNodeTiming.idleTime
¶
Миллисекундная временная метка высокого разрешения количества времени, в течение которого цикл событий простаивал в провайдере событий цикла событий (например, epoll_wait
). При этом не учитывается использование процессора. Если цикл событий еще не запущен (например, в первом тике основного скрипта), свойство имеет значение 0.
performanceNodeTiming.loopExit
¶
Миллисекундная временная метка высокого разрешения, в которой цикл событий Node.js завершился. Если цикл событий еще не завершился, свойство имеет значение -1. Оно может иметь значение не -1 только в обработчике события 'exit'
.
performanceNodeTiming.loopStart
¶
Миллисекундная метка времени высокого разрешения, с которой начался цикл событий Node.js. Если цикл событий еще не начался (например, в первом тике основного скрипта), свойство имеет значение -1.
performanceNodeTiming.nodeStart
¶
Миллисекундная временная метка высокого разрешения, в которой был инициализирован процесс Node.js.
performanceNodeTiming.v8Start
¶
Миллисекундная временная метка высокого разрешения, в которую была инициализирована платформа V8.
Класс: PerformanceResourceTiming
.¶
- Расширяет: {PerformanceEntry}
Предоставляет подробные данные о сетевом времени загрузки ресурсов приложения.
Конструктор этого класса не доступен пользователям напрямую.
performanceResourceTiming.workerStart
¶
Миллисекундная метка времени высокого разрешения непосредственно перед отправкой запроса fetch
. Если ресурс не перехвачен рабочим, свойство всегда будет возвращать 0.
performanceResourceTiming.redirectStart
¶
Миллисекундная временная метка высокого разрешения, которая представляет время начала выборки, инициирующей перенаправление.
performanceResourceTiming.redirectEnd
¶
Миллисекундная временная метка высокого разрешения, которая будет создана сразу после получения последнего байта ответа последнего редиректа.
performanceResourceTiming.fetchStart
¶
Временная метка высокого разрешения в миллисекундах непосредственно перед тем, как Node.js начнет выборку ресурса.
performanceResourceTiming.domainLookupStart
¶
Временная метка высокого разрешения в миллисекундах непосредственно перед тем, как Node.js начнет поиск доменного имени для ресурса.
performanceResourceTiming.domainLookupEnd
¶
Миллисекундная временная метка высокого разрешения, представляющая время сразу после того, как Node.js завершил поиск доменного имени для ресурса.
performanceResourceTiming.connectStart
¶
Миллисекундная временная метка высокого разрешения, представляющая время непосредственно перед тем, как Node.js начнет устанавливать соединение с сервером для получения ресурса.
performanceResourceTiming.connectEnd
¶
Миллисекундная временная метка высокого разрешения, представляющая время сразу после того, как Node.js завершает установление соединения с сервером для получения ресурса.
performanceResourceTiming.secureConnectionStart
¶
Миллисекундная временная метка высокого разрешения, представляющая время непосредственно перед тем, как Node.js начнет процесс рукопожатия для защиты текущего соединения.
performanceResourceTiming.requestStart
¶
Миллисекундная временная метка высокого разрешения, представляющая время непосредственно перед тем, как Node.js получит первый байт ответа от сервера.
performanceResourceTiming.responseEnd
¶
Миллисекундная временная метка высокого разрешения, представляющая время сразу после получения Node.js последнего байта ресурса или непосредственно перед закрытием транспортного соединения, в зависимости от того, что наступит раньше.
performanceResourceTiming.transferSize
¶
Число, представляющее размер (в октетах) полученного ресурса. Размер включает поля заголовка ответа плюс тело полезной нагрузки ответа.
performanceResourceTiming.encodedBodySize
¶
Число, представляющее размер (в октетах), полученный при выборке (HTTP или кэш), тела полезной нагрузки, до удаления любых примененных кодировок содержимого.
performanceResourceTiming.decodedBodySize
¶
Число, представляющее размер (в октетах), полученный при выборке (HTTP или кэш), тела сообщения после удаления любых примененных кодировок содержимого.
performanceResourceTiming.toJSON()
.¶
Возвращает объект
, который является JSON-представлением объекта `PerformanceResourceTiming
Класс: PerformanceObserver
¶
PerformanceObserver.supportedEntryTypes
¶
Получить поддерживаемые типы.
новый PerformanceObserver(callback)
.¶
callback
<Function>
список
{PerformanceObserverEntryList}обсервер
{PerformanceObserver}
Объекты PerformanceObserver
предоставляют уведомления о добавлении новых экземпляров PerformanceEntry
на временную шкалу производительности.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Поскольку экземпляры PerformanceObserver
создают свои собственные дополнительные накладные расходы на производительность, экземпляры не следует оставлять подписанными на уведомления на неопределенный срок. Пользователи должны отключать наблюдателей, как только в них отпадает необходимость.
Обратный вызов callback
вызывается, когда PerformanceObserver
получает уведомление о новых экземплярах PerformanceEntry
. Обратный вызов получает экземпляр PerformanceObserverEntryList
и ссылку на PerformanceObserver
.
performanceObserver.disconnect()
.¶
Отключает экземпляр PerformanceObserver
от всех уведомлений.
performanceObserver.observe(options)
¶
options
<Object>
type
<string>
Один тип {PerformanceEntry}. Не должно быть задано, еслиentryTypes
уже указан.entryTypes
<string[]>
Массив строк, идентифицирующих типы экземпляров {PerformanceEntry}, которые интересуют наблюдателя. Если он не указан, будет выдана ошибка.buffered
<boolean>
Если true, обратный вызов наблюдателя вызывается со списком глобальных буферизованных записейPerformanceEntry
. Если false, толькоPerformanceEntry
, созданные после временной точки, передаются обратному вызову наблюдателя. По умолчанию:false
.
Подписывает экземпляр {PerformanceObserver} на уведомления о новых экземплярах {PerformanceEntry}, идентифицированных либо по options.entryTypes
, либо по options.type
:
1 2 3 4 5 6 7 8 9 10 11 |
|
Класс: PerformanceObserverEntryList
.¶
Класс PerformanceObserverEntryList
используется для предоставления доступа к экземплярам PerformanceEntry
, переданным PerformanceObserver
. Конструктор этого класса не доступен для пользователей.
performanceObserverEntryList.getEntries()
¶
- Возвращает: {PerformanceEntry[]}
Возвращает список объектов PerformanceEntry
в хронологическом порядке относительно performanceEntry.startTime
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
performanceObserverEntryList.getEntriesByName(name[, type])
¶
Возвращает список объектов PerformanceEntry
в хронологическом порядке относительно performanceEntry.startTime
, чье performanceEntry.name
равно name
, и, опционально, чей performanceEntry.entryType
равен type
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
|
performanceObserverEntryList.getEntriesByType(type)
¶
type
<string>
- Возвращает: {PerformanceEntry[]}
Возвращает список объектов PerformanceEntry
в хронологическом порядке относительно performanceEntry.startTime
, чей performanceEntry.entryType
равен type
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
perf_hooks.createHistogram([options])
¶
options
<Object>
lowest
<number>
|<bigint>
Наименьшее различимое значение. Должно быть целое значение больше 0. По умолчанию:1
.highest
<number>
|<bigint>
Наибольшее регистрируемое значение. Должно быть целочисленным значением, которое равно или больше чем в два разаlowest
. По умолчанию:число.MAX_SAFE_INTEGER
.фигуры
<number>
Количество цифр точности. Должно быть числом от1
до5
. По умолчанию:3
.
- Returns {RecordableHistogram}
Возвращает {RecordableHistogram}.
perf_hooks.monitorEventLoopDelay([options])
¶
options
<Object>
resolution
<number>
Частота дискретизации в миллисекундах. Должно быть больше нуля. По умолчанию:10
.
- Возвращает: {IntervalHistogram}
_Это свойство является расширением Node.js. Оно недоступно в веб-браузерах.
Создает объект IntervalHistogram
, который сэмплирует и сообщает о задержке цикла события во времени. Задержки будут сообщаться в наносекундах.
Использование таймера для определения приблизительной задержки цикла событий работает потому, что выполнение таймеров привязано к жизненному циклу цикла событий libuv. То есть, задержка в цикле вызовет задержку в выполнении таймера, и именно эти задержки и призван обнаружить данный API.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Класс: Гистограмма
¶
histogram.count
¶
Количество образцов, записанных гистограммой.
histogram.countBigInt
¶
Количество образцов, записанных гистограммой.
histogram.exceeds
¶
Количество раз, когда задержка цикла событий превысила максимальный порог задержки цикла событий в 1 час.
histogram.exceedsBigInt
¶
Количество раз, когда задержка цикла событий превысила максимальный порог задержки цикла событий в 1 час.
histogram.max
¶
Максимальная задержка цикла записи события.
histogram.maxBigInt
¶
Максимальная задержка цикла записанных событий.
histogram.mean
¶
Среднее значение записанных задержек циклов событий.
histogram.min
¶
Минимальная зарегистрированная задержка цикла событий.
histogram.minBigInt
¶
Минимальная зарегистрированная задержка цикла событий.
histogram.percentile(percentile)
¶
Возвращает значение в заданном процентиле.
histogram.percentileBigInt(percentile)
.¶
Возвращает значение в заданном процентиле.
histogram.percentiles
¶
- {Map}
Возвращает объект Map
, детализирующий накопленное перцентильное распределение.
histogram.percentilesBigInt
¶
- {Map}
Возвращает объект Map
, детализирующий накопленное перцентильное распределение.
histogram.reset()
.¶
Сбрасывает собранные данные гистограммы.
histogram.stddev
¶
Стандартное отклонение записанных задержек циклов событий.
Класс: IntervalHistogram расширяет Histogram
.¶
Гистограмма, которая периодически обновляется на заданном интервале.
histogram.disable()
.¶
- Возвращает:
<boolean>
Отключает таймер интервала обновления. Возвращает true
, если таймер был остановлен, false
, если он уже был остановлен.
histogram.enable()
.¶
- Возвращает:
<boolean>
Включает таймер интервала обновления. Возвращает true
, если таймер был запущен, false
, если он уже был запущен.
Клонирование IntervalHistogram
.¶
Экземпляры {IntervalHistogram} могут быть клонированы через {MessagePort}. На принимающей стороне гистограмма клонируется как обычный объект {Histogram}, который не реализует методы enable()
и disable()
.
Класс: RecordableHistogram расширяет Histogram
.¶
histogram.add(other)
¶
other
{RecordableHistogram}
Добавляет значения из other
к этой гистограмме.
histogram.record(val)
¶
histogram.recordDelta()
¶
Вычисляет количество времени (в наносекундах), прошедшее с момента предыдущего вызова recordDelta()
и записывает это количество в гистограмму.
Примеры¶
Измерение длительности асинхронных операций¶
Следующий пример использует API Async Hooks и Performance для измерения фактической продолжительности операции Timeout (включая время, необходимое для выполнения обратного вызова).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
Измерение длительности загрузки зависимостей¶
Следующий пример измеряет продолжительность операций require()
для загрузки зависимостей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
Измерение времени, затрачиваемого на один HTTP-раундтрип.¶
Следующий пример используется для отслеживания времени, затраченного HTTP клиентом (OutgoingMessage
) и HTTP запросом (IncomingMessage
). Для HTTP клиента это означает промежуток времени между отправкой запроса и получением ответа, а для HTTP запроса - промежуток времени между получением запроса и отправкой ответа:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Измерение времени, которое занимает net.connect
(только для TCP) при успешном соединении¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Измерение времени, которое занимает DNS при успешном выполнении запроса¶
1 2 3 4 5 6 7 8 9 10 11 |
|