forked from gajus/slonik
-
Notifications
You must be signed in to change notification settings - Fork 0
/
benchmark.js
76 lines (66 loc) · 1.37 KB
/
benchmark.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
const {
add,
complete,
cycle,
suite,
} = require('benny');
const clients = [
require('./clients/pg'),
require('./clients/pg-promise'),
require('./clients/slonik'),
];
const tests = [
'select',
'select_arg',
'select_args',
'select_where',
];
(async () => {
const table = [
'|**client**|' + tests
.map((test) => {
return '**' + test + '**';
})
.join('|') + '|',
'|-|' + tests
.map(() => {
return '-';
})
.join('|') + '|',
];
const clientResults = {};
for (const test of tests) {
const benchmarks = [];
for (const client of clients) {
benchmarks.push(
add(
client.name,
client.tests[test],
),
);
}
await suite(
test,
...benchmarks,
cycle(),
complete((summary) => {
for (const result of summary.results) {
clientResults[result.name] = clientResults[result.name] || {};
clientResults[result.name][summary.name] = result;
}
}),
);
}
for (const client of clients) {
const row = [
'[`' + client.name + '`](' + client.url + ')',
];
for (const test of tests) {
row.push(new Intl.NumberFormat('en-US').format(clientResults[client.name][test].ops));
}
table.push(
'|' + row.join('|') + '|',
);
}
console.log(table.join('\n'));
})();