UNPKG

sitespeed.io

Version:

sitespeed.io is an open-source tool for comprehensive web performance analysis, enabling you to test, monitor, and optimize your website’s speed using real browsers in various environments.

68 lines (57 loc) 1.86 kB
import get from 'lodash.get'; import set from 'lodash.set'; import { pushStats, summarizeStats } from '../support/statsHelpers.js'; const queueTimeByPluginName = {}, queueTimeByMessageType = {}, processingTimeByPluginName = {}, processingTimeByMessageType = {}, messageTypes = new Set(), pluginNames = new Set(); export function registerQueueTime(message, plugin, nanos) { messageTypes.add(message.type); pluginNames.add(plugin.getName()); pushStats(queueTimeByMessageType, message.type, nanos / 1_000_000); pushStats(queueTimeByPluginName, plugin.getName(), nanos / 1_000_000); } export function registerProcessingTime(message, plugin, nanos) { messageTypes.add(message.type); pluginNames.add(plugin.getName()); pushStats(processingTimeByMessageType, message.type, nanos / 1_000_000); pushStats(processingTimeByPluginName, plugin.getName(), nanos / 1_000_000); } export function generateStatistics() { const statOptions = { percentiles: [0, 100], includeSum: true }; const byPluginName = [...pluginNames].reduce((summary, pluginName) => { set( summary, ['queueTime', pluginName], summarizeStats(get(queueTimeByPluginName, pluginName), statOptions) ); set( summary, ['processingTime', pluginName], summarizeStats(get(processingTimeByPluginName, pluginName), statOptions) ); return summary; }, {}); const byMessageType = [...messageTypes].reduce((summary, messageType) => { set( summary, ['queueTime', messageType], summarizeStats(get(queueTimeByMessageType, messageType), statOptions) ); set( summary, ['processingTime', messageType], summarizeStats(get(processingTimeByMessageType, messageType), statOptions) ); return summary; }, {}); return { byPluginName, byMessageType }; }