3 min read
•Question 46 of 62mediumHow to measure performance in Node.js?
Using Performance Hooks for timing.
What You'll Learn
- Performance measurement
- Timing operations
- Performance observers
Performance API
code.jsJavaScript
const { performance, PerformanceObserver } = require('perf_hooks');
// Simple timing
const start = performance.now();
// ... operation
const end = performance.now();
console.log(`Took ${end - start}ms`);Performance Marks & Measures
code.jsJavaScript
const { performance } = require('perf_hooks');
performance.mark('start');
// ... operation
await someAsyncOperation();
performance.mark('end');
performance.measure('My Operation', 'start', 'end');
const [measure] = performance.getEntriesByName('My Operation');
console.log(`Duration: ${measure.duration}ms`);
// Clear marks
performance.clearMarks();
performance.clearMeasures();Performance Observer
code.jsJavaScript
const { PerformanceObserver } = require('perf_hooks');
const obs = new PerformanceObserver((list) => {
const entries = list.getEntries();
entries.forEach((entry) => {
console.log(`${entry.name}: ${entry.duration}ms`);
});
});
obs.observe({ entryTypes: ['measure', 'function'] });
// Wrap function for automatic timing
const { performance } = require('perf_hooks');
const timedFunction = performance.timerify(myFunction);
timedFunction(); // Automatically measuredHistogram
code.jsJavaScript
const { monitorEventLoopDelay } = require('perf_hooks');
const h = monitorEventLoopDelay({ resolution: 20 });
h.enable();
setTimeout(() => {
console.log(`Min: ${h.min}ns`);
console.log(`Max: ${h.max}ns`);
console.log(`Mean: ${h.mean}ns`);
h.disable();
}, 5000);