Files
Matteo Collina 40933d58ae benchmark: add implicit-framing case to http/set-header
The existing `setHeader` and `setHeaderWH` cases set `Content-Length`
explicitly, and `normal` passes every header to `writeHead()`. The very
common handler shape `res.setHeader(...)` + `res.end(body)`, where
`end()` derives the framing, exercises a different path and was not
covered.

Signed-off-by: Matteo Collina <hello@matteocollina.com>
PR-URL: https://github.com/nodejs/node/pull/66420
Reviewed-By: Tim Perry <pimterry@gmail.com>
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
2026-10-03 09:50:37 +00:00

35 lines
874 B
JavaScript

'use strict';
const common = require('../common.js');
const bench = common.createBenchmark(main, {
res: ['normal', 'setHeader', 'setHeaderWH', 'setHeaderImplicit'],
duration: 5,
});
const type = 'bytes';
const len = 4;
const chunks = 0;
const chunkedEnc = 0;
const c = 50;
// normal: writeHead(status, {...})
// setHeader: statusCode = status, setHeader(...) x2
// setHeaderWH: setHeader(...), writeHead(status, ...)
// setHeaderImplicit: statusCode = status, setHeader(...) x1, framing left to end()
function main({ res, duration }) {
const server = require('../fixtures/simple-http-server.js')
.listen(0)
.on('listening', () => {
const path = `/${type}/${len}/${chunks}/${res}/${chunkedEnc}`;
bench.http({
path: path,
connections: c,
duration,
port: server.address().port,
}, () => {
server.close();
});
});
}