Skip to content

Commit

Permalink
benchmark: control HTTP benchmarks run time
Browse files Browse the repository at this point in the history
PR-URL: #12121
Refs: #12068
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
joyeecheung committed Apr 9, 2017
1 parent a3e71a8 commit 3e3414f
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

var http = require('http');

var port = parseInt(process.env.PORT || 8000);

var fixed = 'C'.repeat(20 * 1024);
var storedBytes = Object.create(null);
var storedBuffer = Object.create(null);
Expand All @@ -22,7 +20,7 @@ if (useDomains) {
gdom.enter();
}

var server = module.exports = http.createServer(function(req, res) {
module.exports = http.createServer(function(req, res) {
if (useDomains) {
var dom = domain.create();
dom.add(req);
Expand Down Expand Up @@ -142,8 +140,3 @@ var server = module.exports = http.createServer(function(req, res) {
res.end(body);
}
});

server.listen(port, function() {
if (module === require.main)
console.error('Listening at http://127.0.0.1:' + port + '/');
});
4 changes: 2 additions & 2 deletions benchmark/http/_chunky_http_client.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ var test = require('../../test/common.js');

var bench = common.createBenchmark(main, {
len: [1, 4, 8, 16, 32, 64, 128],
num: [5, 50, 500, 2000],
n: [5, 50, 500, 2000],
type: ['send'],
});


function main(conf) {
var len = +conf.len;
var num = +conf.num;
var num = +conf.n;
var todo = [];
var headers = [];
// Chose 7 because 9 showed "Connection error" / "Connection closed"
Expand Down
6 changes: 3 additions & 3 deletions benchmark/http/bench-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@ const kOnMessageComplete = HTTPParser.kOnMessageComplete | 0;
const CRLF = '\r\n';

const bench = common.createBenchmark(main, {
fields: [4, 8, 16, 32],
len: [4, 8, 16, 32],
n: [1e5],
});


function main(conf) {
const fields = conf.fields >>> 0;
const len = conf.len >>> 0;
const n = conf.n >>> 0;
var header = `GET /hello HTTP/1.1${CRLF}Content-Type: text/plain${CRLF}`;

for (var i = 0; i < fields; i++) {
for (var i = 0; i < len; i++) {
header += `X-Filler${i}: ${Math.random().toString(36).substr(2)}${CRLF}`;
}
header += CRLF;
Expand Down
8 changes: 4 additions & 4 deletions benchmark/http/chunked.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
var common = require('../common.js');

var bench = common.createBenchmark(main, {
num: [1, 4, 8, 16],
size: [1, 64, 256],
n: [1, 4, 8, 16],
len: [1, 64, 256],
c: [100]
});

function main(conf) {
const http = require('http');
var chunk = Buffer.alloc(conf.size, '8');
var chunk = Buffer.alloc(conf.len, '8');

var server = http.createServer(function(req, res) {
function send(left) {
Expand All @@ -28,7 +28,7 @@ function main(conf) {
send(left - 1);
}, 0);
}
send(conf.num);
send(conf.n);
});

server.listen(common.PORT, function() {
Expand Down
4 changes: 2 additions & 2 deletions benchmark/http/client-request-body.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ var http = require('http');
var bench = common.createBenchmark(main, {
dur: [5],
type: ['asc', 'utf', 'buf'],
bytes: [32, 256, 1024],
len: [32, 256, 1024],
method: ['write', 'end']
});

function main(conf) {
var dur = +conf.dur;
var len = +conf.bytes;
var len = +conf.len;

var encoding;
var chunk;
Expand Down
7 changes: 4 additions & 3 deletions benchmark/http/cluster.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@ if (cluster.isMaster) {
var bench = common.createBenchmark(main, {
// unicode confuses ab on os x.
type: ['bytes', 'buffer'],
length: [4, 1024, 102400],
len: [4, 1024, 102400],
c: [50, 500]
});
} else {
require('./_http_simple.js');
var port = parseInt(process.env.PORT || PORT);
require('../fixtures/simple-http-server.js').listen(port);
}

function main(conf) {
Expand All @@ -26,7 +27,7 @@ function main(conf) {
return;

setTimeout(function() {
var path = '/' + conf.type + '/' + conf.length;
var path = '/' + conf.type + '/' + conf.len;

bench.http({
path: path,
Expand Down
6 changes: 3 additions & 3 deletions benchmark/http/create-clientrequest.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ var common = require('../common.js');
var ClientRequest = require('http').ClientRequest;

var bench = common.createBenchmark(main, {
pathlen: [1, 8, 16, 32, 64, 128],
len: [1, 8, 16, 32, 64, 128],
n: [1e6]
});

function main(conf) {
var pathlen = +conf.pathlen;
var len = +conf.len;
var n = +conf.n;

var path = '/'.repeat(pathlen);
var path = '/'.repeat(len);
var opts = { path: path, createConnection: function() {} };

bench.start();
Expand Down
4 changes: 2 additions & 2 deletions benchmark/http/end-vs-write-end.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ var common = require('../common.js');

var bench = common.createBenchmark(main, {
type: ['asc', 'utf', 'buf'],
kb: [64, 128, 256, 1024],
len: [64 * 1024, 128 * 1024, 256 * 1024, 1024 * 1024],
c: [100],
method: ['write', 'end']
});

function main(conf) {
const http = require('http');
var chunk;
var len = conf.kb * 1024;
var len = conf.len;
switch (conf.type) {
case 'buf':
chunk = Buffer.alloc(len, 'x');
Expand Down
11 changes: 6 additions & 5 deletions benchmark/http/simple.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,18 @@ var PORT = common.PORT;
var bench = common.createBenchmark(main, {
// unicode confuses ab on os x.
type: ['bytes', 'buffer'],
length: [4, 1024, 102400],
len: [4, 1024, 102400],
chunks: [0, 1, 4], // chunks=0 means 'no chunked encoding'.
c: [50, 500],
res: ['normal', 'setHeader', 'setHeaderWH']
});

function main(conf) {
process.env.PORT = PORT;
var server = require('./_http_simple.js');
setTimeout(function() {
var path = '/' + conf.type + '/' + conf.length + '/' + conf.chunks + '/' +
var server = require('../fixtures/simple-http-server.js')
.listen(process.env.PORT || common.PORT)
.on('listening', function() {
var path = '/' + conf.type + '/' + conf.len + '/' + conf.chunks + '/' +
conf.res;

bench.http({
Expand All @@ -24,5 +25,5 @@ function main(conf) {
}, function() {
server.close();
});
}, 2000);
});
}

0 comments on commit 3e3414f

Please sign in to comment.