Skip to content

Commit 1df48e0

Browse files
author
Jonas Hermsmeier
committed
Merge pull request #16 from themasch/matcha-bench
using new benchmark lib
2 parents af23766 + ee490b9 commit 1df48e0

File tree

6 files changed

+159
-94
lines changed

6 files changed

+159
-94
lines changed

README.md

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,29 @@ npm install bencode
3838

3939
### encode
4040
```
41-
bencode x 10,933 ops/sec ±1.43% (90 runs sampled)
42-
bencoding x 7,864 ops/sec ±0.91% (92 runs sampled)
43-
dht-bencode x 7,028 ops/sec ±8.01% (72 runs sampled)
44-
bncode x 6,713 ops/sec ±2.62% (82 runs sampled)
45-
dht.js x 13,762 ops/sec ±1.17% (92 runs sampled)
41+
11,883 op/s ⨠ bencode
42+
5,457 op/s ⨠ bencoding
43+
6,550 op/s ⨠ dht_bencode
44+
5,405 op/s ⨠ bncode
45+
10,978 op/s ⨠ dht
4646
```
4747

4848
### decode
4949
```
50-
bencode x 34,142 ops/sec ±0.18% (101 runs sampled)
51-
bencoding x 37,041 ops/sec ±0.50% (99 runs sampled)
52-
dht-bencode x 29,211 ops/sec ±0.30% (99 runs sampled)
53-
bncode x 1,208 ops/sec ±0.84% (100 runs sampled)
54-
dht.js x 27,651 ops/sec ±0.78% (100 runs sampled)
50+
30,240 op/s ⨠ bencode
51+
25,293 op/s ⨠ bencoding
52+
26,220 op/s ⨠ dht_bencode
53+
824 op/s ⨠ bncode
54+
19,824 op/s ⨠ dht
5555
```
5656

57-
*Benchmarks run on an Intel Core i5-3427U CPU @ 2.29 GHz with node v0.10.4*
57+
*Benchmarks run on an Intel Core2 CPU T9550 @ 2.66GHz with node v0.10.5*
58+
59+
To run the benchmarks simply use
60+
61+
```
62+
npm run-script bench
63+
```
5864

5965
## Usage
6066

benchmark/buffer-vs-string.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
var bencode = require('../')
2+
var buf = require('fs').readFileSync(__dirname + '/test.torrent');
3+
var str = buf.toString('ascii');
4+
5+
suite('buffer vs string', function() {
6+
bench('buffer', function() {
7+
bencode.decode(buf);
8+
})
9+
bench('string', function() {
10+
bencode.decode(str);
11+
})
12+
})

benchmark/decode.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
var fs = require( 'fs' )
2+
3+
var bencode = require( '../' )
4+
var bencoding = require( 'bencoding' )
5+
var dht_bencode = require( 'dht-bencode' )
6+
var bncode = require( 'bncode' )
7+
var dht = require( 'dht.js/lib/dht/bencode' )
8+
9+
var buffer = fs.readFileSync( __dirname + '/test.torrent' )
10+
11+
suite('decode to buffer', function() {
12+
bench('bencode', function() {
13+
bencode.decode( buffer )
14+
})
15+
bench('bencoding', function() {
16+
var v = bencoding.decode( buffer )
17+
})
18+
bench('dht_bencode', function() {
19+
dht_bencode.bdecode( buffer )
20+
})
21+
bench('bncode', function() {
22+
bncode.decode( buffer )
23+
})
24+
bench('dht', function() {
25+
dht.decode( buffer )
26+
})
27+
})
28+
29+
suite('decode to utf8', function() {
30+
bench('bencode', function() {
31+
bencode.decode( buffer, 'utf8' )
32+
})
33+
})
34+
suite('decode to ascii', function() {
35+
bench('bencode', function() {
36+
bencode.decode( buffer, 'ascii' )
37+
})
38+
})
39+
suite('decode to binary', function() {
40+
bench('bencode', function() {
41+
bencode.decode( buffer, 'ascii' )
42+
})
43+
})
44+

benchmark/encode.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
var fs = require( 'fs' )
2+
3+
var bencode = require( '../' )
4+
var bencoding = require( 'bencoding' )
5+
var dht_bencode = require( 'dht-bencode' )
6+
var bncode = require( 'bncode' )
7+
var dht = require( 'dht.js/lib/dht/bencode' )
8+
9+
var buffer = fs.readFileSync( __dirname + '/test.torrent' )
10+
var object = bencode.decode( buffer )
11+
var object_utf8 = bencode.decode( buffer, 'utf8' )
12+
var object_ascii = bencode.decode( buffer, 'ascii' )
13+
var object_binary = bencode.decode( buffer, 'binary' )
14+
15+
suite('encode buffer', function() {
16+
bench('bencode', function() {
17+
bencode.encode( object )
18+
})
19+
bench('bencoding', function() {
20+
bencoding.encode( object )
21+
})
22+
bench('dht_bencode', function() {
23+
dht_bencode.bencode( object )
24+
})
25+
bench('bncode', function() {
26+
bncode.encode( object )
27+
})
28+
bench('dht', function() {
29+
dht.encode( object )
30+
})
31+
})
32+
33+
suite('encode utf8', function() {
34+
bench('bencode', function() {
35+
bencode.encode( object_utf8 )
36+
})
37+
bench('bencoding', function() {
38+
bencoding.encode( object_utf8 )
39+
})
40+
bench('dht_bencode', function() {
41+
dht_bencode.bencode( object_utf8 )
42+
})
43+
bench('bncode', function() {
44+
bncode.encode( object_utf8 )
45+
})
46+
bench('dht', function() {
47+
dht.encode( object_utf8 )
48+
})
49+
})
50+
suite('encode ascii', function() {
51+
bench('bencode', function() {
52+
bencode.encode( object_ascii )
53+
})
54+
bench('bencoding', function() {
55+
bencoding.encode( object_ascii )
56+
})
57+
bench('dht_bencode', function() {
58+
dht_bencode.bencode( object_ascii )
59+
})
60+
bench('bncode', function() {
61+
bncode.encode( object_ascii )
62+
})
63+
bench('dht', function() {
64+
dht.encode( object_ascii )
65+
})
66+
})
67+
suite('encode binary', function() {
68+
bench('bencode', function() {
69+
bencode.encode( object_binary )
70+
})
71+
bench('bencoding', function() {
72+
bencoding.encode( object_binary )
73+
})
74+
bench('dht_bencode', function() {
75+
dht_bencode.bencode( object_binary )
76+
})
77+
bench('bncode', function() {
78+
bncode.encode( object_binary )
79+
})
80+
bench('dht', function() {
81+
dht.encode( object_binary )
82+
})
83+
})

benchmark/index.js

Lines changed: 0 additions & 81 deletions
This file was deleted.

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,16 @@
2121
"main": "bencode.js",
2222

2323
"devDependencies": {
24-
"benchmark": "",
24+
"matcha": "",
2525
"bencoding": "",
2626
"dht-bencode": "",
2727
"bncode": "",
2828
"dht.js": "",
2929
"mocha": ""
3030
},
3131
"scripts": {
32-
"test": "./node_modules/.bin/mocha"
32+
"test": "./node_modules/.bin/mocha",
33+
"bench": "./node_modules/.bin/matcha benchmark/*.js"
3334
},
3435

3536
"repository": {

0 commit comments

Comments
 (0)