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>v7.x
Brian White
9 years ago
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