-
Notifications
You must be signed in to change notification settings - Fork 0
/
benchmark.ts
92 lines (77 loc) · 1.77 KB
/
benchmark.ts
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import {Suite, type Event} from 'benchmark';
import PQ, {LOW_FIRST, HIGH_FIRST} from './src/index';
let pqlf: PQ<string>;
let pqhf: PQ<string>;
function onComplete(this: Suite) {
console.log(`Fastest is ${this.filter('fastest').map('name').toString()}`);
}
function onCycle(event: Event) {
console.log(String(event.target));
}
function onStart() {
pqlf = new PQ({sort: LOW_FIRST});
pqhf = new PQ({sort: HIGH_FIRST});
}
new Suite()
.add('lf#isEmpty', function () {
pqlf.isEmpty();
})
.add('hf#isEmpty', function () {
pqhf.isEmpty();
})
.on('start', onStart)
.on('cycle', onCycle)
.on('complete', onComplete)
.run();
new Suite()
.add('lf#insert p1', function () {
pqlf.insert('a', 1);
})
.add('hf#insert p1', function () {
pqhf.insert('a', 1);
})
.on('start', onStart)
.on('cycle', onCycle)
.on('complete', onComplete)
.run();
new Suite()
.add('lf#insert length', function () {
pqlf.insert('a', pqlf.items.length - 1);
})
// Heap OOM
// .add("hf#insert length", function () {
// pqhf.insert("a", pqhf.items.length - 1);
// })
.on('start', onStart)
.on('cycle', onCycle)
.on('complete', onComplete)
.run();
new Suite()
.add('lf#insert 5 then pop', function () {
pqlf.insert('a', 1);
pqlf.insert('a', 2);
pqlf.insert('a', 3);
pqlf.insert('a', 4);
pqlf.insert('a', 5);
pqlf.pop();
pqlf.pop();
pqlf.pop();
pqlf.pop();
pqlf.pop();
})
.add('hf#insert 5 then pop', function () {
pqhf.insert('a', 1);
pqhf.insert('a', 2);
pqhf.insert('a', 3);
pqhf.insert('a', 4);
pqhf.insert('a', 5);
pqhf.pop();
pqhf.pop();
pqhf.pop();
pqhf.pop();
pqhf.pop();
})
.on('start', onStart)
.on('cycle', onCycle)
.on('complete', onComplete)
.run();