mirror of
https://github.com/nodejs/node.git
synced 2026-10-28 10:15:07 +08:00
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>
This commit is contained in:
1 parent
b933d20c3f
commit
40933d58ae
2 files changed
+8
-1
No files matched your search
@@ -114,6 +114,12 @@ module.exports = http.createServer((req, res) => {
|
||||
else
|
||||
res.writeHead(status, { 'Content-Length': len.toString() });
|
||||
break;
|
||||
case 'setHeaderImplicit':
|
||||
// Let end() derive the message framing: no Content-Length or
|
||||
// Transfer-Encoding header and no writeHead() call.
|
||||
res.statusCode = status;
|
||||
res.setHeader('Content-Type', 'text/plain');
|
||||
break;
|
||||
default:
|
||||
if (chunkedEnc) {
|
||||
res.writeHead(status, {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
const common = require('../common.js');
|
||||
|
||||
const bench = common.createBenchmark(main, {
|
||||
res: ['normal', 'setHeader', 'setHeaderWH'],
|
||||
res: ['normal', 'setHeader', 'setHeaderWH', 'setHeaderImplicit'],
|
||||
duration: 5,
|
||||
});
|
||||
|
||||
@@ -15,6 +15,7 @@ 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)
|
||||
|
||||
Reference in new issue
Block a user