Skip to content

Instantly share code, notes, and snippets.

@ca057
Last active March 29, 2018 13:47
Show Gist options
  • Save ca057/6718b7d48fd66bb0fc11506f4190e6a5 to your computer and use it in GitHub Desktop.
Save ca057/6718b7d48fd66bb0fc11506f4190e6a5 to your computer and use it in GitHub Desktop.
Middleware to measure request duration for express using the Performance Timing API.
const { performance } = require('perf_hooks');
const express = require('express');
const expressRequestDurationMiddleware = (req, res, next) => {
performance.mark('request.start');
const end = res.end;
res.end = (...args) => {
performance.mark('request.end');
performance.measure('request', 'request.start', 'request.end');
const measure = performance.getEntriesByName('request')[0];
console.log(`Duration: ${measure.duration}ms\n`);
performance.clearMeasures('request');
performance.clearMarks('request.start');
performance.clearMarks('request.end');
end.apply(res, args);
};
next();
}
// example usage:
const app = express();
app.use(expressRequestDurationMiddleware);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment