Skip to content

Commit 9a66652

Browse files
authored
Merge pull request #78 from themasch/benchmarks
test(benchmark): Replace `matcha` with `nanobench`
2 parents 4835dc7 + 1e86ff0 commit 9a66652

File tree

8 files changed

+358
-158
lines changed

8 files changed

+358
-158
lines changed

benchmark/bencode.js

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
var fs = require('fs')
2+
var path = require('path')
3+
var bench = require('nanobench')
4+
5+
var bencode = require('../')
6+
7+
var buffer = fs.readFileSync(path.join(__dirname, 'test.torrent'))
8+
var object = bencode.decode(buffer)
9+
var objectUtf8 = bencode.decode(buffer, 'utf8')
10+
var objectAscii = bencode.decode(buffer, 'ascii')
11+
var objectBinary = bencode.decode(buffer, 'binary')
12+
13+
const ITERATIONS = 10000
14+
15+
bench(`bencode.encode() [buffer] ⨉ ${ITERATIONS}`, function (run) {
16+
var result = null
17+
18+
run.start()
19+
for (var i = 0; i < ITERATIONS; i++) {
20+
result = bencode.encode(object)
21+
}
22+
run.end()
23+
24+
return result
25+
})
26+
27+
bench(`bencode.encode() [utf8] ⨉ ${ITERATIONS}`, function (run) {
28+
var result = null
29+
30+
run.start()
31+
for (var i = 0; i < ITERATIONS; i++) {
32+
result = bencode.encode(objectUtf8)
33+
}
34+
run.end()
35+
36+
return result
37+
})
38+
39+
bench(`bencode.encode() [ascii] ⨉ ${ITERATIONS}`, function (run) {
40+
var result = null
41+
42+
run.start()
43+
for (var i = 0; i < ITERATIONS; i++) {
44+
result = bencode.encode(objectAscii)
45+
}
46+
run.end()
47+
48+
return result
49+
})
50+
51+
bench(`bencode.encode() [binary] ⨉ ${ITERATIONS}`, function (run) {
52+
var result = null
53+
54+
run.start()
55+
for (var i = 0; i < ITERATIONS; i++) {
56+
result = bencode.encode(objectBinary)
57+
}
58+
run.end()
59+
60+
return result
61+
})
62+
63+
bench(`bencode.decode() [buffer] ⨉ ${ITERATIONS}`, function (run) {
64+
var result = null
65+
66+
run.start()
67+
for (var i = 0; i < ITERATIONS; i++) {
68+
result = bencode.decode(buffer)
69+
}
70+
run.end()
71+
72+
return result
73+
})
74+
75+
bench(`bencode.decode() [utf8] ⨉ ${ITERATIONS}`, function (run) {
76+
var result = null
77+
78+
run.start()
79+
for (var i = 0; i < ITERATIONS; i++) {
80+
result = bencode.decode(buffer, 'utf8')
81+
}
82+
run.end()
83+
84+
return result
85+
})
86+
87+
bench(`bencode.decode() [ascii] ⨉ ${ITERATIONS}`, function (run) {
88+
var result = null
89+
90+
run.start()
91+
for (var i = 0; i < ITERATIONS; i++) {
92+
result = bencode.decode(buffer, 'ascii')
93+
}
94+
run.end()
95+
96+
return result
97+
})
98+
99+
bench(`bencode.decode() [binary] ⨉ ${ITERATIONS}`, function (run) {
100+
var result = null
101+
102+
run.start()
103+
for (var i = 0; i < ITERATIONS; i++) {
104+
result = bencode.decode(buffer, 'binary')
105+
}
106+
run.end()
107+
108+
return result
109+
})

benchmark/buffer-vs-string.js

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,33 @@
1-
/* global suite, bench */
21
var fs = require('fs')
32
var path = require('path')
43
var bencode = require('../')
4+
var bench = require('nanobench')
55

66
var buffer = fs.readFileSync(path.join(__dirname, 'test.torrent'))
77
var str = buffer.toString('ascii')
88

9-
suite('buffer vs string', function () {
10-
bench('buffer', function () {
11-
bencode.decode(buffer)
12-
})
13-
bench('string', function () {
14-
bencode.decode(str)
15-
})
9+
const ITERATIONS = 10000
10+
11+
bench(`decode buffer ⨉ ${ITERATIONS}`, function (run) {
12+
var result = null
13+
14+
run.start()
15+
for (var i = 0; i < ITERATIONS; i++) {
16+
result = bencode.decode(buffer)
17+
}
18+
run.end()
19+
20+
return result
21+
})
22+
23+
bench(`decode string ⨉ ${ITERATIONS}`, function (run) {
24+
var result = null
25+
26+
run.start()
27+
for (var i = 0; i < ITERATIONS; i++) {
28+
result = bencode.decode(str)
29+
}
30+
run.end()
31+
32+
return result
1633
})

benchmark/compare-decode.js

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
var fs = require('fs')
2+
var path = require('path')
3+
var bench = require('nanobench')
4+
5+
var bencode = require('../')
6+
var bencoding = require('bencoding')
7+
var bncode = require('bncode')
8+
var btparse = require('btparse')
9+
var dht = require('dht.js/lib/dht/bencode')
10+
var dhtBencode = require('dht-bencode')
11+
12+
var buffer = fs.readFileSync(path.join(__dirname, 'test.torrent'))
13+
14+
const ITERATIONS = 10000
15+
16+
bench(`bencode.decode() ⨉ ${ITERATIONS}`, function (run) {
17+
var result = null
18+
19+
run.start()
20+
for (var i = 0; i < ITERATIONS; i++) {
21+
result = bencode.decode(buffer)
22+
}
23+
run.end()
24+
25+
return result
26+
})
27+
28+
bench(`bencoding.decode() ⨉ ${ITERATIONS}`, function (run) {
29+
var result = null
30+
31+
run.start()
32+
for (var i = 0; i < ITERATIONS; i++) {
33+
result = bencoding.decode(buffer)
34+
}
35+
run.end()
36+
37+
return result
38+
})
39+
40+
bench(`bncode.decode() ⨉ ${ITERATIONS}`, function (run) {
41+
var result = null
42+
43+
run.start()
44+
for (var i = 0; i < ITERATIONS; i++) {
45+
result = bncode.decode(buffer)
46+
}
47+
run.end()
48+
49+
return result
50+
})
51+
52+
bench(`btparse() ⨉ ${ITERATIONS}`, function (run) {
53+
var result = null
54+
55+
run.start()
56+
for (var i = 0; i < ITERATIONS; i++) {
57+
result = btparse(buffer)
58+
}
59+
run.end()
60+
61+
return result
62+
})
63+
64+
bench(`dht.decode() ⨉ ${ITERATIONS}`, function (run) {
65+
var result = null
66+
67+
run.start()
68+
for (var i = 0; i < ITERATIONS; i++) {
69+
result = dht.decode(buffer)
70+
}
71+
run.end()
72+
73+
return result
74+
})
75+
76+
bench(`dhtBencode.decode() ⨉ ${ITERATIONS}`, function (run) {
77+
var result = null
78+
79+
run.start()
80+
for (var i = 0; i < ITERATIONS; i++) {
81+
result = dhtBencode.bdecode(buffer)
82+
}
83+
run.end()
84+
85+
return result
86+
})

benchmark/compare-encode.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
var fs = require('fs')
2+
var path = require('path')
3+
var bench = require('nanobench')
4+
5+
var bencode = require('../')
6+
var bencoding = require('bencoding')
7+
var bncode = require('bncode')
8+
var dht = require('dht.js/lib/dht/bencode')
9+
var dhtBencode = require('dht-bencode')
10+
11+
var buffer = fs.readFileSync(path.join(__dirname, 'test.torrent'))
12+
var object = bencode.decode(buffer)
13+
14+
const ITERATIONS = 10000
15+
16+
bench(`bencode.encode() ⨉ ${ITERATIONS}`, function (run) {
17+
var result = null
18+
19+
run.start()
20+
for (var i = 0; i < ITERATIONS; i++) {
21+
result = bencode.encode(object)
22+
}
23+
run.end()
24+
25+
return result
26+
})
27+
28+
bench(`bencoding.encode() ⨉ ${ITERATIONS}`, function (run) {
29+
var result = null
30+
31+
run.start()
32+
for (var i = 0; i < ITERATIONS; i++) {
33+
result = bencoding.encode(object)
34+
}
35+
run.end()
36+
37+
return result
38+
})
39+
40+
bench(`bncode.encode() ⨉ ${ITERATIONS}`, function (run) {
41+
var result = null
42+
43+
run.start()
44+
for (var i = 0; i < ITERATIONS; i++) {
45+
result = bncode.encode(object)
46+
}
47+
run.end()
48+
49+
return result
50+
})
51+
52+
bench(`dht.encode() ⨉ ${ITERATIONS}`, function (run) {
53+
var result = null
54+
55+
run.start()
56+
for (var i = 0; i < ITERATIONS; i++) {
57+
result = dht.encode(object)
58+
}
59+
run.end()
60+
61+
return result
62+
})
63+
64+
bench(`dhtBencode.encode() ⨉ ${ITERATIONS}`, function (run) {
65+
var result = null
66+
67+
run.start()
68+
for (var i = 0; i < ITERATIONS; i++) {
69+
result = dhtBencode.bencode(object)
70+
}
71+
run.end()
72+
73+
return result
74+
})

benchmark/decode.js

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

0 commit comments

Comments
 (0)