Skip to content

Commit 40c9e67

Browse files
committed
improve benchmarks, fix functional rbtree bench
1 parent fb8f06f commit 40c9e67

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

bench.js

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ var Benchmark = require('benchmark'),
88
// not benchmarking dsjslib & binarySearchTree, they're slow and so not interesting
99

1010
var data = [],
11-
N = 1000;
11+
N = 10000;
1212

1313
for (var i = 0; i < N; i++) {
1414
data[i] = Math.floor(Math.random() * N);
@@ -42,7 +42,7 @@ new Benchmark.Suite()
4242
.add('functional-red-black-tree', function () {
4343
var tree = functionalRBTree(compare);
4444
for (var i = 0; i < N; i++) {
45-
tree.insert(data[i]);
45+
tree = tree.insert(data[i]);
4646
}
4747
})
4848
.add('jsbintrees RBTree', function () {
@@ -55,7 +55,7 @@ new Benchmark.Suite()
5555
.on('cycle', function(event) { console.log(String(event.target)); }).run();
5656

5757

58-
console.log('\nsearch random item in ' + N + '-sized tree');
58+
console.log('\nsearch each item in ' + N + '-sized tree');
5959

6060
var btree = bbtree(compare);
6161
for (var i = 0; i < N; i++) {
@@ -69,7 +69,7 @@ for (var i = 0; i < N; i++) {
6969

7070
var rbtree = functionalRBTree(compare);
7171
for (var i = 0; i < N; i++) {
72-
rbtree.insert(data[i]);
72+
rbtree = rbtree.insert(data[i]);
7373
}
7474

7575
var bintree = new bintrees.RBTree(compare);
@@ -88,24 +88,36 @@ function randomIndex(N) {
8888

8989
new Benchmark.Suite()
9090
.add('llrb', function () {
91-
lltree.find(data[randomIndex(N)]);
91+
for (var i = 0; i < N; i++) {
92+
lltree.find(data[i]);
93+
}
9294
})
9395
.add('bbtree', function () {
94-
btree.find(data[randomIndex(N)]);
96+
for (var i = 0; i < N; i++) {
97+
btree.find(data[i]);
98+
}
9599
})
96100
.add('bsarray', function () {
97-
arr.find(data[randomIndex(N)]);
101+
for (var i = 0; i < N; i++) {
102+
arr.find(data[i]);
103+
}
98104
})
99105
.add('functional-red-black-tree', function () {
100-
rbtree.get(data[randomIndex(N)]);
106+
for (var i = 0; i < N; i++) {
107+
rbtree.get(data[i]);
108+
}
101109
})
102110
.add('jsbintrees RBTree', function () {
103-
bintree.find(data[randomIndex(N)]);
111+
for (var i = 0; i < N; i++) {
112+
bintree.find(data[i]);
113+
}
104114
})
105115
.add('naive loop', function () {
106-
var key = data[randomIndex(N)];
107116
for (var i = 0; i < N; i++) {
108-
if (compare(data[i], key) === 0) break;
117+
var key = data[i];
118+
for (var j = 0; j < N; j++) {
119+
if (compare(data[j], key) === 0) break;
120+
}
109121
}
110122
})
111123
.on('error', function(event) { console.log(event.target.error); })

0 commit comments

Comments
 (0)