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,18 +510,15 @@ OutgoingMessage.prototype.setHeader = function setHeader(name, value) {
|
|||||||
const key = name.toLowerCase();
|
const key = name.toLowerCase();
|
||||||
this[outHeadersKey][key] = [name, value];
|
this[outHeadersKey][key] = [name, value];
|
||||||
|
|
||||||
switch (key.length) {
|
switch (key) {
|
||||||
case 10:
|
case 'connection':
|
||||||
if (key === 'connection')
|
this._removedConnection = false;
|
||||||
this._removedConnection = false;
|
|
||||||
break;
|
break;
|
||||||
case 14:
|
case 'content-length':
|
||||||
if (key === 'content-length')
|
this._removedContLen = false;
|
||||||
this._removedContLen = false;
|
|
||||||
break;
|
break;
|
||||||
case 17:
|
case 'transfer-encoding':
|
||||||
if (key === 'transfer-encoding')
|
this._removedTE = false;
|
||||||
this._removedTE = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -583,22 +580,18 @@ OutgoingMessage.prototype.removeHeader = function removeHeader(name) {
|
|||||||
|
|
||||||
var key = name.toLowerCase();
|
var key = name.toLowerCase();
|
||||||
|
|
||||||
switch (key.length) {
|
switch (key) {
|
||||||
case 10:
|
case 'connection':
|
||||||
if (key === 'connection')
|
this._removedConnection = true;
|
||||||
this._removedConnection = true;
|
|
||||||
break;
|
break;
|
||||||
case 14:
|
case 'content-length':
|
||||||
if (key === 'content-length')
|
this._removedContLen = true;
|
||||||
this._removedContLen = true;
|
|
||||||
break;
|
break;
|
||||||
case 17:
|
case 'transfer-encoding':
|
||||||
if (key === 'transfer-encoding')
|
this._removedTE = true;
|
||||||
this._removedTE = true;
|
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 'date':
|
||||||
if (key === 'date')
|
this.sendDate = false;
|
||||||
this.sendDate = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user