mirror of
https://github.com/nodejs/node.git
synced 2026-10-28 18:25:13 +08:00
Copy validated header names directly into the shallow result instead of using ObjectAssign on the internal null-prototype map. Signed-off-by: Roberto Bianchi <roberto.bianchi@spendesk.com> PR-URL: https://github.com/nodejs/node/pull/66592 Reviewed-By: Tim Perry <pimterry@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common.js');
|
|
const assert = require('node:assert');
|
|
const http2 = require('node:http2');
|
|
|
|
const bench = common.createBenchmark(main, {
|
|
n: [1e6],
|
|
headers: [0, 1, 4, 16, 64],
|
|
});
|
|
|
|
function main({ n, headers }) {
|
|
const server = http2.createServer();
|
|
server.on('request', (request, response) => {
|
|
const expected = { __proto__: null };
|
|
for (let index = 0; index < headers; index++) {
|
|
const name = `x-header-${index}`;
|
|
response.setHeader(name, 'value');
|
|
expected[name] = 'value';
|
|
}
|
|
|
|
for (let index = 0; index < 1e4; index++) {
|
|
response.getHeaders();
|
|
}
|
|
|
|
let result;
|
|
bench.start();
|
|
for (let index = 0; index < n; index++) {
|
|
result = response.getHeaders();
|
|
}
|
|
bench.end(n);
|
|
assert.deepStrictEqual(result, expected);
|
|
response.end();
|
|
});
|
|
|
|
server.listen(0, '127.0.0.1', () => {
|
|
const client = http2.connect(`http://127.0.0.1:${server.address().port}`);
|
|
const request = client.request();
|
|
request.resume();
|
|
request.on('end', () => {
|
|
client.close();
|
|
server.close();
|
|
});
|
|
request.end();
|
|
});
|
|
}
|