Skip to content

Commit f8c7ff2

Browse files
committed
Added decode/encode benchmarks
1 parent 175fe85 commit f8c7ff2

File tree

5 files changed

+130
-1
lines changed

5 files changed

+130
-1
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ lib-cov
66
*.dat
77
*.out
88
*.pid
9+
benchmarks/*.png
910
node_modules

Makefile

+6-1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,9 @@ test-cov:
1919
test-leaks:
2020
@ls test/leaks/* | xargs node --expose_debug_as=debug --expose_gc
2121

22-
.PHONY: test
22+
bench:
23+
@node benchmarks/encode \
24+
&& node benchmarks/decode \
25+
&& open benchmarks/{encode,decode}.png
26+
27+
.PHONY: test bench

benchmarks/decode.js

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
2+
/**
3+
* Module dependencies.
4+
*/
5+
6+
var vbench = require('vbench')
7+
, io = require('../')
8+
, parser = io.parser;
9+
10+
console.log(' decode:');
11+
12+
var suite = vbench.createSuite({
13+
path: __dirname + '/decode.png'
14+
, min: 500
15+
});
16+
17+
suite.bench('string', function(next){
18+
parser.decodePacket('4:::"2"');
19+
next();
20+
});
21+
22+
suite.bench('event', function(next){
23+
parser.decodePacket('5:::{"name":"woot"}');
24+
next()
25+
});
26+
27+
suite.bench('event+ack', function(next){
28+
parser.decodePacket('5:1+::{"name":"tobi"}');
29+
next();
30+
});
31+
32+
suite.bench('event+data', function(next){
33+
parser.decodePacket('5:::{"name":"edwald","args":[{"a": "b"},2,"3"]}');
34+
next();
35+
});
36+
37+
var payload = parser.encodePayload([
38+
parser.encodePacket({ type: 'message', data: '5', endpoint: '' })
39+
, parser.encodePacket({ type: 'message', data: '53d', endpoint: '' })
40+
, parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' })
41+
, parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' })
42+
, parser.encodePacket({ type: 'message', data: 'foobarbazfoobarbaz', endpoint: '' })
43+
, parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' })
44+
, parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' })
45+
]);
46+
47+
suite.bench('payload', function(next){
48+
parser.decodePayload(payload);
49+
next();
50+
});
51+
52+
suite.run();

benchmarks/encode.js

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
2+
/**
3+
* Module dependencies.
4+
*/
5+
6+
var vbench = require('vbench')
7+
, io = require('../')
8+
, parser = io.parser;
9+
10+
console.log('\n encode:');
11+
12+
var suite = vbench.createSuite({
13+
path: __dirname + '/encode.png'
14+
, min: 500
15+
});
16+
17+
suite.bench('string', function(next){
18+
parser.encodePacket({
19+
type: 'json'
20+
, endpoint: ''
21+
, data: '2'
22+
})
23+
next();
24+
});
25+
26+
suite.bench('event', function(next){
27+
parser.encodePacket({
28+
type: 'event'
29+
, name: 'woot'
30+
, endpoint: ''
31+
, args: []
32+
});
33+
next();
34+
});
35+
36+
suite.bench('event+ack', function(next){
37+
parser.encodePacket({
38+
type: 'json'
39+
, id: 1
40+
, ack: 'data'
41+
, endpoint: ''
42+
, data: { a: 'b' }
43+
});
44+
next();
45+
});
46+
47+
suite.bench('event+data', function(next){
48+
parser.encodePacket({
49+
type: 'event'
50+
, name: 'edwald'
51+
, endpoint: ''
52+
, args: [{a: 'b'}, 2, '3']
53+
});
54+
next();
55+
});
56+
57+
suite.bench('payload', function(next){
58+
parser.encodePayload([
59+
parser.encodePacket({ type: 'message', data: '5', endpoint: '' })
60+
, parser.encodePacket({ type: 'message', data: '53d', endpoint: '' })
61+
, parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' })
62+
, parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' })
63+
, parser.encodePacket({ type: 'message', data: 'foobarbazfoobarbaz', endpoint: '' })
64+
, parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' })
65+
, parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' })
66+
]);
67+
next();
68+
});
69+
70+
suite.run();

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"expresso": "0.7.7"
2525
, "should": "0.0.4"
2626
, "assertvanish": "0.0.3-1"
27+
, "vbench": "0.0.2"
2728
}
2829
, "main": "index"
2930
, "engines": { "node": ">= 0.4.0" }

0 commit comments

Comments
 (0)