mirror of https://github.com/lukechilds/node.git
Browse Source
By passing a single string rather than many small ones and a single block allocation for passing headers, save expensive interactions with JS values and memory allocations. PR-URL: https://github.com/nodejs/node/pull/14723 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>v6
Anna Henningsen
7 years ago
5 changed files with 147 additions and 81 deletions
@ -0,0 +1,47 @@ |
|||
'use strict'; |
|||
|
|||
const common = require('../common.js'); |
|||
const PORT = common.PORT; |
|||
|
|||
var bench = common.createBenchmark(main, { |
|||
n: [1e3], |
|||
nheaders: [100, 1000], |
|||
}, { flags: ['--expose-http2', '--no-warnings'] }); |
|||
|
|||
function main(conf) { |
|||
const n = +conf.n; |
|||
const nheaders = +conf.nheaders; |
|||
const http2 = require('http2'); |
|||
const server = http2.createServer(); |
|||
|
|||
const headersObject = { ':path': '/' }; |
|||
for (var i = 0; i < nheaders; i++) { |
|||
headersObject[`foo${i}`] = `some header value ${i}`; |
|||
} |
|||
|
|||
server.on('stream', (stream) => { |
|||
stream.respond(); |
|||
stream.end('Hi!'); |
|||
}); |
|||
server.listen(PORT, () => { |
|||
const client = http2.connect(`http://localhost:${PORT}/`); |
|||
|
|||
function doRequest(remaining) { |
|||
const req = client.request(headersObject); |
|||
req.end(); |
|||
req.on('data', () => {}); |
|||
req.on('end', () => { |
|||
if (remaining > 0) { |
|||
doRequest(remaining - 1); |
|||
} else { |
|||
bench.end(n); |
|||
server.close(); |
|||
client.destroy(); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
bench.start(); |
|||
doRequest(n); |
|||
}); |
|||
} |
Loading…
Reference in new issue