From 602ffd6986becd6ac8ac172bf4372878f7ba8f22 Mon Sep 17 00:00:00 2001 From: Anatoli Papirovski Date: Tue, 24 Apr 2018 10:24:51 +0200 Subject: 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 Reviewed-By: Trivikram Kamat Reviewed-By: James M Snell --- benchmark/http/headers.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 benchmark/http/headers.js (limited to 'benchmark/http') 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(); + }); + }); +} -- cgit v1.2.3