diff options
author | Anatoli Papirovski <apapirovski@mac.com> | 2018-04-24 10:24:51 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2018-04-27 20:31:25 +0200 |
commit | 602ffd6986becd6ac8ac172bf4372878f7ba8f22 (patch) | |
tree | 02b70206b593b3a9240d99436062e86868111dce /benchmark/http/headers.js | |
parent | b87ef189e91e475ca4811addc3f4201641f8789b (diff) | |
download | android-node-v8-602ffd6986becd6ac8ac172bf4372878f7ba8f22.tar.gz android-node-v8-602ffd6986becd6ac8ac172bf4372878f7ba8f22.tar.bz2 android-node-v8-602ffd6986becd6ac8ac172bf4372878f7ba8f22.zip |
http: refactor outgoing headers processing
Use a shared function, for..in instead of Object.keys, do less work in
`setHeader` and instead defer some of it until later, and other minor
changes to improve clarity, as well as a slight boost in performance.
PR-URL: https://github.com/nodejs/node/pull/20250
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'benchmark/http/headers.js')
-rw-r--r-- | benchmark/http/headers.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/benchmark/http/headers.js b/benchmark/http/headers.js new file mode 100644 index 0000000000..748865afbf --- /dev/null +++ b/benchmark/http/headers.js @@ -0,0 +1,36 @@ +'use strict'; + +const common = require('../common.js'); +const http = require('http'); + +const bench = common.createBenchmark(main, { + duplicates: [1, 100], + n: [10, 1000], +}); + +function main({ duplicates, n }) { + const headers = { + 'Connection': 'keep-alive', + 'Transfer-Encoding': 'chunked', + }; + + for (var i = 0; i < n / duplicates; i++) { + headers[`foo${i}`] = []; + for (var j = 0; j < duplicates; j++) { + headers[`foo${i}`].push(`some header value ${i}`); + } + } + + const server = http.createServer(function(req, res) { + res.writeHead(200, headers); + res.end(); + }); + server.listen(common.PORT, function() { + bench.http({ + path: '/', + connections: 10 + }, function() { + server.close(); + }); + }); +} |