http: switch on string values
Long ago, V8 was much faster switching on string lengths than values. That is no longer the case, so we can simplify a couple of methods. PR-URL: https://github.com/nodejs/node/pull/18351 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Kyle Farnung <kfarnung@microsoft.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Jon Moss <me@jonathanmoss.me>
This commit is contained in:
parent
6c1906ab3e
commit
aba6bc34a1
30
benchmark/http/set_header.js
Normal file
30
benchmark/http/set_header.js
Normal file
@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
|
||||
const common = require('../common.js');
|
||||
const { OutgoingMessage } = require('_http_outgoing');
|
||||
|
||||
const bench = common.createBenchmark(main, {
|
||||
value: [
|
||||
'X-Powered-By',
|
||||
'Vary',
|
||||
'Set-Cookie',
|
||||
'Content-Type',
|
||||
'Content-Length',
|
||||
'Connection',
|
||||
'Transfer-Encoding'
|
||||
],
|
||||
n: [1e6],
|
||||
});
|
||||
|
||||
function main(conf) {
|
||||
const n = +conf.n;
|
||||
const value = conf.value;
|
||||
|
||||
const og = new OutgoingMessage();
|
||||
|
||||
bench.start();
|
||||
for (var i = 0; i < n; i++) {
|
||||
og.setHeader(value, '');
|
||||
}
|
||||
bench.end(n);
|
||||
}
|
@ -510,17 +510,14 @@ OutgoingMessage.prototype.setHeader = function setHeader(name, value) {
|
||||
const key = name.toLowerCase();
|
||||
this[outHeadersKey][key] = [name, value];
|
||||
|
||||
switch (key.length) {
|
||||
case 10:
|
||||
if (key === 'connection')
|
||||
switch (key) {
|
||||
case 'connection':
|
||||
this._removedConnection = false;
|
||||
break;
|
||||
case 14:
|
||||
if (key === 'content-length')
|
||||
case 'content-length':
|
||||
this._removedContLen = false;
|
||||
break;
|
||||
case 17:
|
||||
if (key === 'transfer-encoding')
|
||||
case 'transfer-encoding':
|
||||
this._removedTE = false;
|
||||
break;
|
||||
}
|
||||
@ -583,21 +580,17 @@ OutgoingMessage.prototype.removeHeader = function removeHeader(name) {
|
||||
|
||||
var key = name.toLowerCase();
|
||||
|
||||
switch (key.length) {
|
||||
case 10:
|
||||
if (key === 'connection')
|
||||
switch (key) {
|
||||
case 'connection':
|
||||
this._removedConnection = true;
|
||||
break;
|
||||
case 14:
|
||||
if (key === 'content-length')
|
||||
case 'content-length':
|
||||
this._removedContLen = true;
|
||||
break;
|
||||
case 17:
|
||||
if (key === 'transfer-encoding')
|
||||
case 'transfer-encoding':
|
||||
this._removedTE = true;
|
||||
break;
|
||||
case 4:
|
||||
if (key === 'date')
|
||||
case 'date':
|
||||
this.sendDate = false;
|
||||
break;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user