Skip to content

Commit 04468ae

Browse files
committed
adding some more benchmarks
1 parent 88bbc88 commit 04468ae

File tree

10 files changed

+1774
-78
lines changed

10 files changed

+1774
-78
lines changed

Gruntfile.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ module.exports = function(grunt) {
3939
readableNames: true,
4040
modules: ["./macros/index.js"]
4141
},
42-
src: "benchmark/contracts-vs-rho.js",
43-
dest: "benchmark/cvr-benchmark.js"
42+
src: "benchmark/src/*.js",
43+
dest: "benchmark/"
4444
}
4545
},
4646
template: {
@@ -101,7 +101,7 @@ module.exports = function(grunt) {
101101
},
102102
benchmark: {
103103
all: {
104-
src: ["benchmark/cvr-benchmark.js"],
104+
src: ["benchmark/*.js"],
105105
dest: "benchmark/results.csv"
106106
}
107107
},

benchmark/bench_fun.js

Lines changed: 563 additions & 0 deletions
Large diffs are not rendered by default.

benchmark/bench_fun_raw.js

Lines changed: 562 additions & 0 deletions
Large diffs are not rendered by default.

benchmark/cvr-benchmark.js renamed to benchmark/bench_id.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -541,10 +541,7 @@ _c$600 = function () {
541541
};
542542
}();
543543
var c = require('rho-contracts');
544-
function baseId(x) {
545-
return x;
546-
}
547-
var inner_id = _c$600.fun([typeof Num !== 'undefined' ? Num : _c$600.Num], typeof Num !== 'undefined' ? Num : _c$600.Num).proj(_c$600.Blame.create('id', 'function id', '(calling context for id)', 7))(function id$2(x) {
544+
var inner_id = _c$600.fun([typeof Num !== 'undefined' ? Num : _c$600.Num], typeof Num !== 'undefined' ? Num : _c$600.Num).proj(_c$600.Blame.create('id', 'function id', '(calling context for id)', 5))(function id$2(x) {
548545
return x;
549546
});
550547
function id(x) {
@@ -554,12 +551,12 @@ var rhoId = c.fun({ x: c.number }).returns(c.number).wrap(function (x) {
554551
return x;
555552
});
556553
module.exports = {
557-
name: 'contracts.js vs rho-contracts',
554+
name: 'CJS vs RHO - Identity function',
558555
tests: {
559-
'Id contracts.js': function () {
556+
'CJS - id(100)': function () {
560557
id(100);
561558
},
562-
'Id rho-contracts': function () {
559+
'RHO - id(100)': function () {
563560
rhoId(100);
564561
}
565562
}

benchmark/bench_id_raw.js

Lines changed: 562 additions & 0 deletions
Large diffs are not rendered by default.

benchmark/results.csv

Lines changed: 8 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,9 @@
11
name,date,error,count,cycles,hz
2-
"contracts-vs-rho","Wed Aug 06 2014 20:15:41 GMT-0700 (PDT)",,50652,3,957152.4301783083
3-
"Id contracts.js","Wed Aug 06 2014 20:22:44 GMT-0700 (PDT)",,1352,5,20766.364028439533
4-
"Id rho-contracts","Wed Aug 06 2014 20:22:44 GMT-0700 (PDT)",Error: The test "Id rho-contracts" is empty. This may be the result of dead code removal.,0,0,0
5-
"Id contracts.js","Wed Aug 06 2014 20:28:14 GMT-0700 (PDT)",,1447,5,22340.81283179879
6-
"Id rho-contracts","Wed Aug 06 2014 20:28:19 GMT-0700 (PDT)",,4467,4,69795.03317332706
7-
"Id contracts.js","Wed Aug 06 2014 20:28:53 GMT-0700 (PDT)",,1363,7,20888.765159468992
8-
"Id rho-contracts","Wed Aug 06 2014 20:28:53 GMT-0700 (PDT)",ReferenceError: rhoId is not defined,0,0,0
9-
"Id contracts.js","Wed Aug 06 2014 20:29:26 GMT-0700 (PDT)",,1336,5,20808.23673446918
10-
"Id rho-contracts","Wed Aug 06 2014 20:29:26 GMT-0700 (PDT)",ReferenceError: rhoId is not defined,0,0,0
11-
"Id contracts.js","Wed Aug 06 2014 20:29:39 GMT-0700 (PDT)",,1400,6,21922.730884277065
12-
"Id rho-contracts","Wed Aug 06 2014 20:29:39 GMT-0700 (PDT)",ReferenceError: rhoId is not defined,0,0,0
13-
"Id contracts.js","Wed Aug 06 2014 20:31:51 GMT-0700 (PDT)",,1348,6,20852.009537377173
14-
"Id rho-contracts","Wed Aug 06 2014 20:31:56 GMT-0700 (PDT)",,4705,5,70208.85239618989
15-
"Id contracts.js","Wed Aug 06 2014 20:37:38 GMT-0700 (PDT)",,28721,7,548522.5326938939
16-
"Id rho-contracts","Wed Aug 06 2014 20:37:43 GMT-0700 (PDT)",,4287,4,68033.87293886884
17-
"Id no contracts","Wed Aug 06 2014 20:53:13 GMT-0700 (PDT)",,4439077,7,77137010.0335377
18-
"Id contracts.js","Wed Aug 06 2014 20:53:18 GMT-0700 (PDT)",,1476,5,21935.77821649957
19-
"Id rho-contracts","Wed Aug 06 2014 20:53:24 GMT-0700 (PDT)",,4573,4,70873.04015608411
20-
"Id contracts.js","Thu Aug 07 2014 00:15:09 GMT-0700 (PDT)",,1448,4,20760.91598643842
21-
"Id rho-contracts","Thu Aug 07 2014 00:15:14 GMT-0700 (PDT)",,4450,4,70486.0941749407
22-
"Id contracts.js","Thu Aug 07 2014 00:53:13 GMT-0700 (PDT)",,714,6,13179.320171236248
23-
"Id rho-contracts","Thu Aug 07 2014 00:53:19 GMT-0700 (PDT)",,4504,5,71882.0058785958
24-
"Id contracts.js","Thu Aug 07 2014 00:53:40 GMT-0700 (PDT)",,711,4,12946.317168419162
25-
"Id rho-contracts","Thu Aug 07 2014 00:53:45 GMT-0700 (PDT)",,4167,4,66965.03219938242
26-
"Id contracts.js","Thu Aug 07 2014 00:55:50 GMT-0700 (PDT)",,1482,5,22706.17674748339
27-
"Id rho-contracts","Thu Aug 07 2014 00:55:55 GMT-0700 (PDT)",,4423,7,66668.28293579744
28-
"Id contracts.js","Thu Aug 07 2014 00:59:52 GMT-0700 (PDT)",,947,5,15946.538442668669
29-
"Id rho-contracts","Thu Aug 07 2014 00:59:58 GMT-0700 (PDT)",,4218,4,66309.4408432277
30-
"Id contracts.js","Thu Aug 07 2014 01:01:26 GMT-0700 (PDT)",,4576,3,55392.94956440377
31-
"Id rho-contracts","Thu Aug 07 2014 01:01:31 GMT-0700 (PDT)",,4438,4,68676.16571062598
32-
"Id contracts.js","Thu Aug 07 2014 01:14:54 GMT-0700 (PDT)",,600,4,10696.613886165926
33-
"Id rho-contracts","Thu Aug 07 2014 01:15:00 GMT-0700 (PDT)",,4438,7,59433.29052258584
34-
"Id contracts.js","Thu Aug 07 2014 01:15:28 GMT-0700 (PDT)",,605,6,11216.670442965618
35-
"Id rho-contracts","Thu Aug 07 2014 01:15:33 GMT-0700 (PDT)",,4048,6,63029.457873145635
36-
"Id contracts.js","Thu Aug 07 2014 01:15:50 GMT-0700 (PDT)",,604,8,9895.314633862055
37-
"Id rho-contracts","Thu Aug 07 2014 01:15:56 GMT-0700 (PDT)",,4244,4,62805.99890718948
38-
"Id contracts.js","Thu Aug 07 2014 01:33:05 GMT-0700 (PDT)",,1387,5,21122.45270261521
39-
"Id rho-contracts","Thu Aug 07 2014 01:33:11 GMT-0700 (PDT)",,4454,5,69723.99116955888
40-
"Id contracts.js","Thu Aug 07 2014 01:38:45 GMT-0700 (PDT)",,24139,6,465383.89464260184
41-
"Id rho-contracts","Thu Aug 07 2014 01:38:51 GMT-0700 (PDT)",,4635,5,71571.25025269778
42-
"Id contracts.js","Thu Aug 07 2014 01:39:57 GMT-0700 (PDT)",,22988,7,436943.0191639323
43-
"Id rho-contracts","Thu Aug 07 2014 01:40:02 GMT-0700 (PDT)",,4442,4,64199.60191626977
44-
"Id contracts.js","Thu Aug 07 2014 01:43:43 GMT-0700 (PDT)",,678,6,12520.052673558943
45-
"Id rho-contracts","Thu Aug 07 2014 01:43:48 GMT-0700 (PDT)",,4355,4,70550.43777815324
46-
"Id contracts.js","Thu Aug 07 2014 01:44:06 GMT-0700 (PDT)",,637,4,11814.581994111255
47-
"Id rho-contracts","Thu Aug 07 2014 01:44:12 GMT-0700 (PDT)",,4274,4,68026.3213069852
48-
"Id contracts.js","Thu Aug 07 2014 01:45:06 GMT-0700 (PDT)",,721,4,13105.843239853413
49-
"Id rho-contracts","Thu Aug 07 2014 01:45:12 GMT-0700 (PDT)",,4321,4,68627.46302475703
50-
"Id contracts.js","Thu Aug 07 2014 01:45:42 GMT-0700 (PDT)",,23853,6,445030.34816416464
51-
"Id rho-contracts","Thu Aug 07 2014 01:45:47 GMT-0700 (PDT)",,4049,6,66089.0389700134
52-
"Id contracts.js","Thu Aug 07 2014 01:46:24 GMT-0700 (PDT)",,24082,5,459930.5021380374
53-
"Id rho-contracts","Thu Aug 07 2014 01:46:29 GMT-0700 (PDT)",,4540,7,72270.63488701299
54-
"Id contracts.js","Thu Aug 07 2014 01:47:10 GMT-0700 (PDT)",,709,6,13002.682843312072
55-
"Id rho-contracts","Thu Aug 07 2014 01:47:16 GMT-0700 (PDT)",,4429,6,70976.53042003908
56-
"Id contracts.js","Thu Aug 07 2014 01:47:41 GMT-0700 (PDT)",,22933,4,417809.43645649374
57-
"Id rho-contracts","Thu Aug 07 2014 01:47:46 GMT-0700 (PDT)",,4545,4,65873.85675206262
58-
"Id contracts.js","Thu Aug 07 2014 01:48:06 GMT-0700 (PDT)",,23355,5,433430.3778835461
59-
"Id rho-contracts","Thu Aug 07 2014 01:48:12 GMT-0700 (PDT)",,4182,6,64886.631744746206
60-
"Id contracts.js","Thu Aug 07 2014 01:55:56 GMT-0700 (PDT)",,23481,4,436227.525723691
61-
"Id rho-contracts","Thu Aug 07 2014 01:56:02 GMT-0700 (PDT)",,4422,6,67905.64320426945
2+
"RHO - fibonacci(10)","Thu Aug 07 2014 13:51:31 GMT-0700 (PDT)",,25,2,376.2335254990089
3+
"CJS - fibonacci(100)","Thu Aug 07 2014 13:51:37 GMT-0700 (PDT)",,15751,6,289088.4954133135
4+
"Vanilla - fibonacci(10)","Thu Aug 07 2014 13:51:42 GMT-0700 (PDT)",,49380,7,857904.3464798775
5+
"CJS - fibonacci(100)","Thu Aug 07 2014 13:51:48 GMT-0700 (PDT)",,15761,4,298208.30711707857
6+
"CJS - id(100)","Thu Aug 07 2014 13:51:53 GMT-0700 (PDT)",,21883,4,416031.64591045876
7+
"RHO - id(100)","Thu Aug 07 2014 13:51:59 GMT-0700 (PDT)",,4096,3,68390.00632805444
8+
"Vanilla - id(100)","Thu Aug 07 2014 13:52:04 GMT-0700 (PDT)",,4428137,4,71874709.790816
9+
"CJS - id(100)","Thu Aug 07 2014 13:52:09 GMT-0700 (PDT)",,22445,7,430274.02492497995

benchmark/src/bench_fun.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import @ from "contracts.js"
2+
var c = require('rho-contracts');
3+
4+
5+
var rhoFib = c.fun({
6+
x: c.number
7+
}).returns(c.number).wrap(
8+
function (n) {
9+
return n < 2 ? n : rhoFib(n - 1) + rhoFib(n - 2);
10+
}
11+
);
12+
13+
@ (Num) -> Num
14+
function fibonacci(n) {
15+
return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
16+
}
17+
18+
module.exports = {
19+
name: "CJS vs RHO - Fibonacci function",
20+
tests: {
21+
'RHO - fibonacci(10)': function() {
22+
rhoFib(10);
23+
},
24+
'CJS - fibonacci(100)': function() {
25+
fibonacci(10);
26+
}
27+
}
28+
};

benchmark/src/bench_fun_raw.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import @ from "contracts.js"
2+
3+
4+
function fibonacciRaw(n) {
5+
return n < 2 ? n : fibonacciRaw(n - 1) + fibonacciRaw(n - 2);
6+
}
7+
8+
@ (Num) -> Num
9+
function fibonacci(n) {
10+
return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
11+
}
12+
13+
module.exports = {
14+
name: "CJS vs Vanilla - Fibonacci function",
15+
tests: {
16+
'Vanilla - fibonacci(10)': function() {
17+
fibonacciRaw(10);
18+
},
19+
'CJS - fibonacci(100)': function() {
20+
fibonacci(10);
21+
}
22+
}
23+
};

benchmark/contracts-vs-rho.js renamed to benchmark/src/bench_id.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import @ from "contracts.js"
22
var c = require('rho-contracts');
33

4-
function baseId(x) { return x; }
5-
64
@ (Num) -> Num
75
function id(x) { return x; }
86

@@ -11,15 +9,12 @@ var rhoId = c.fun({
119
}).returns(c.number).wrap(function(x) { return x; });
1210

1311
module.exports = {
14-
name: "contracts.js vs rho-contracts",
12+
name: "CJS vs RHO - Identity function",
1513
tests: {
16-
// 'Id no contracts': function() {
17-
// baseId(100);
18-
// },
19-
'Id contracts.js': function() {
14+
'CJS - id(100)': function() {
2015
id(100);
2116
},
22-
'Id rho-contracts': function() {
17+
'RHO - id(100)': function() {
2318
rhoId(100);
2419
}
2520
}

benchmark/src/bench_id_raw.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import @ from "contracts.js"
2+
3+
function baseId(x) { return x; }
4+
5+
@ (Num) -> Num
6+
function id(x) { return x; }
7+
8+
module.exports = {
9+
name: "CJS vs Vanilla - Identity function",
10+
tests: {
11+
'Vanilla - id(100)': function() {
12+
baseId(100);
13+
},
14+
'CJS - id(100)': function() {
15+
id(100);
16+
}
17+
}
18+
};

0 commit comments

Comments
 (0)