Skip to content

Instantly share code, notes, and snippets.

@trevnorris
Created April 11, 2014 07:57
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trevnorris/10448236 to your computer and use it in GitHub Desktop.
Save trevnorris/10448236 to your computer and use it in GitHub Desktop.
Playing the "who's bigger" hello world game.
var TCP = process.binding('tcp_wrap').TCP;
var SlowBuffer = require('buffer').SlowBuffer;
var util = require('util');
var err;
var headers = 'HTTP/1.1 200 OK\r\n' +
'Connection: Keep-Alive\r\n' +
'Content-Type: text/plain; charset=latin-1\r\n' +
'Content-Length: 12\r\n\r\n' +
'hello world\n';
var response = new SlowBuffer(headers.length);
response.write(headers, 'binary');
var server = new TCP();
err = server.bind('127.0.0.1', 8000);
if (err)
fail(server, err, 'bind');
err = server.listen(511);
if (err)
fail(server, err, 'listen');
server.onconnection = onConnection;
console.log('Server running on port 8000');
function onConnection(err, client) {
if (err)
fail(this, err, 'connect');
client.setKeepAlive(true, 10000);
client.onread = onRead;
err = client.readStart();
if (err)
fail(this, err, 'read');
}
function onRead(nread, buffer) {
if (nread < 0)
return this.close();
if (nread === 0)
return;
var writeReq = { oncomplete: dataWritten };
err = this.writeBuffer(writeReq, response);
if (err)
fail(this, err, 'write');
}
function dataWritten(err, handle, req) {
if (err)
fail(handle, err, 'write');
}
function fail(self, err, syscall) {
err = util._errnoException(err, syscall);
err.handle = self;
throw err;
}
$ ./wrk -c 4 -t 1 -d 3 'http://l.me:8000/'
Running 3s test @ http://l.me:8000/
1 threads and 4 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 525.57us 3.65ms 27.22ms 98.14%
Req/Sec 158.19k 47.41k 212.67k 71.89%
419717 requests in 3.00s, 47.23MB read
Requests/sec: 139910.24
Transfer/sec: 15.74MB
$ ./wrk -c 32 -t 4 -d 3 'http://l.me:8000/'
Running 3s test @ http://l.me:8000/
4 threads and 32 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.64ms 6.80ms 35.18ms 95.90%
Req/Sec 36.33k 13.94k 82.67k 74.17%
409523 requests in 3.00s, 46.09MB read
Requests/sec: 136485.69
Transfer/sec: 15.36MB
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment