mirror of https://github.com/lukechilds/node.git
Browse Source
This commit optimizes checkInvalidHeaderChar() by unrolling the character checking loop a bit. Additionally, some changes to the benchmark runner are needed in order for the included benchmark to be run correctly. Specifically, the regexp used to parse `key=value` parameters contained a greedy quantifier that was causing the `key` to match part of the `value` if `value` contained an equals sign. PR-URL: https://github.com/nodejs/node/pull/6570 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>v6.x
Brian White
9 years ago
committed by
Evan Lucas
3 changed files with 69 additions and 10 deletions
@ -0,0 +1,42 @@ |
|||
'use strict'; |
|||
|
|||
const common = require('../common.js'); |
|||
const _checkInvalidHeaderChar = require('_http_common')._checkInvalidHeaderChar; |
|||
|
|||
const bench = common.createBenchmark(main, { |
|||
key: [ |
|||
// Valid
|
|||
'', |
|||
'1', |
|||
'\t\t\t\t\t\t\t\t\t\tFoo bar baz', |
|||
'keep-alive', |
|||
'close', |
|||
'gzip', |
|||
'20091', |
|||
'private', |
|||
'text/html; charset=utf-8', |
|||
'text/plain', |
|||
'Sat, 07 May 2016 16:54:48 GMT', |
|||
'SAMEORIGIN', |
|||
'en-US', |
|||
|
|||
// Invalid
|
|||
'Here is a value that is really a folded header value\r\n this should be \ |
|||
supported, but it is not currently', |
|||
'中文呢', // unicode
|
|||
'foo\nbar', |
|||
'\x7F' |
|||
], |
|||
n: [5e8], |
|||
}); |
|||
|
|||
function main(conf) { |
|||
var n = +conf.n; |
|||
var key = conf.key; |
|||
|
|||
bench.start(); |
|||
for (var i = 0; i < n; i++) { |
|||
_checkInvalidHeaderChar(key); |
|||
} |
|||
bench.end(n); |
|||
} |
Loading…
Reference in new issue