1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const perf_hooks_1 = require("perf_hooks");
- function createPerformance() {
- let enabled = false;
- let timeOrigin;
- let marks;
- let measurements;
- function enable() {
- enabled = true;
- marks = new Map();
- measurements = new Map();
- timeOrigin = perf_hooks_1.performance.now();
- }
- function disable() {
- enabled = false;
- }
- function mark(name) {
- if (enabled) {
- marks.set(name, perf_hooks_1.performance.now());
- }
- }
- function measure(name, startMark, endMark) {
- if (enabled) {
- const start = (startMark && marks.get(startMark)) || timeOrigin;
- const end = (endMark && marks.get(endMark)) || perf_hooks_1.performance.now();
- measurements.set(name, (measurements.get(name) || 0) + (end - start));
- }
- }
- function markStart(name) {
- if (enabled) {
- mark(`${name} start`);
- }
- }
- function markEnd(name) {
- if (enabled) {
- mark(`${name} end`);
- measure(name, `${name} start`, `${name} end`);
- }
- }
- function formatName(name, width = 0) {
- return `${name}:`.padEnd(width);
- }
- function formatDuration(duration, width = 0) {
- return `${(duration / 1000).toFixed(2)} s`.padStart(width);
- }
- function print() {
- if (enabled) {
- let nameWidth = 0;
- let durationWidth = 0;
- measurements.forEach((duration, name) => {
- nameWidth = Math.max(nameWidth, formatName(name).length);
- durationWidth = Math.max(durationWidth, formatDuration(duration).length);
- });
- measurements.forEach((duration, name) => {
- console.log(`${formatName(name, nameWidth)} ${formatDuration(duration, durationWidth)}`);
- });
- }
- }
- return { enable, disable, mark, markStart, markEnd, measure, print };
- }
- exports.createPerformance = createPerformance;
|