Skip to content

Commit c80e9a0

Browse files
committed
Add benchmark
1 parent e1827e1 commit c80e9a0

File tree

5 files changed

+321
-29
lines changed

5 files changed

+321
-29
lines changed

README.md

Whitespace-only changes.

benchmark/pop.ts

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
import { PriorityQueue } from '../src/index';
2+
import * as chalk from 'chalk';
3+
4+
// ================ ascending =====================
5+
console.log(chalk.green('ascending'));
6+
let p = new PriorityQueue();
7+
for (let i = 0; i < 1000000; i++) {
8+
p.push(i);
9+
}
10+
console.time('1 million elements');
11+
for (let i = 0; i < 500000; i++) {
12+
p.pop();
13+
}
14+
console.timeEnd('1 million elements');
15+
16+
17+
p = new PriorityQueue();
18+
for (let i = 0; i < 5000000; i++) {
19+
p.push(i);
20+
}
21+
console.time('5 million elements');
22+
for (let i = 0; i < 2500000; i++) {
23+
p.pop();
24+
}
25+
console.timeEnd('5 million elements');
26+
27+
28+
p = new PriorityQueue();
29+
for (let i = 0; i < 10000000; i++) {
30+
p.push(i);
31+
}
32+
console.time('10 million elements');
33+
for (let i = 0; i < 5000000; i++) {
34+
p.pop();
35+
}
36+
console.timeEnd('10 million elements');
37+
38+
39+
p = new PriorityQueue();
40+
for (let i = 0; i < 20000000; i++) {
41+
p.push(i);
42+
}
43+
console.time('20 million elements');
44+
for (let i = 0; i < 1000000; i++) {
45+
p.pop();
46+
}
47+
console.timeEnd('20 million elements');
48+
49+
50+
p = new PriorityQueue();
51+
for (let i = 0; i < 30000000; i++) {
52+
p.push(i);
53+
}
54+
console.time('30 million elements');
55+
for (let i = 0; i < 1500000; i++) {
56+
p.pop();
57+
}
58+
console.timeEnd('30 million elements');
59+
60+
61+
// ================ descending =====================
62+
console.log(chalk.green('descending'));
63+
p = new PriorityQueue();
64+
for (let i = 1000000; i >= 0; i--) {
65+
p.push(i);
66+
}
67+
console.time('1 million elements');
68+
for (let i = 0; i < 500000; i++) {
69+
p.pop();
70+
}
71+
console.timeEnd('1 million elements');
72+
73+
74+
p = new PriorityQueue();
75+
for (let i = 5000000; i >= 0; i--) {
76+
p.push(i);
77+
}
78+
console.time('5 million elements');
79+
for (let i = 0; i < 2500000; i++) {
80+
p.pop();
81+
}
82+
console.timeEnd('5 million elements');
83+
84+
85+
p = new PriorityQueue();
86+
for (let i = 10000000; i >= 0; i--) {
87+
p.push(i);
88+
}
89+
console.time('10 million elements');
90+
for (let i = 0; i < 5000000; i++) {
91+
p.pop();
92+
}
93+
console.timeEnd('10 million elements');
94+
95+
96+
p = new PriorityQueue();
97+
for (let i = 20000000; i >= 0; i--) {
98+
p.push(i);
99+
}
100+
console.time('20 million elements');
101+
for (let i = 0; i < 1000000; i++) {
102+
p.pop();
103+
}
104+
console.timeEnd('20 million elements');
105+
106+
107+
p = new PriorityQueue();
108+
for (let i = 30000000; i >= 0; i--) {
109+
p.push(i);
110+
}
111+
console.time('30 million elements');
112+
for (let i = 0; i < 1500000; i++) {
113+
p.pop();
114+
}
115+
console.timeEnd('30 million elements');

benchmark/push.ts

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import { PriorityQueue } from '../src/index';
2+
import * as chalk from 'chalk';
3+
4+
// ================ ascending =====================
5+
console.log(chalk.green('ascending'));
6+
console.time('1 million elements');
7+
let p = new PriorityQueue();
8+
for (let i = 0; i < 1000000; i++) {
9+
p.push(i);
10+
}
11+
console.timeEnd('1 million elements');
12+
13+
console.time('5 million elements');
14+
p = new PriorityQueue();
15+
for (let i = 0; i < 5000000; i++) {
16+
p.push(i);
17+
}
18+
console.timeEnd('5 million elements');
19+
20+
console.time('10 million elements');
21+
p = new PriorityQueue();
22+
for (let i = 0; i < 10000000; i++) {
23+
p.push(i);
24+
}
25+
console.timeEnd('10 million elements');
26+
27+
console.time('20 million elements');
28+
p = new PriorityQueue();
29+
for (let i = 0; i < 20000000; i++) {
30+
p.push(i);
31+
}
32+
console.timeEnd('20 million elements');
33+
34+
console.time('30 million elements');
35+
p = new PriorityQueue();
36+
for (let i = 0; i < 30000000; i++) {
37+
p.push(i);
38+
}
39+
console.timeEnd('30 million elements');
40+
41+
42+
// ================ descending =====================
43+
console.log(chalk.green('descending'));
44+
console.time('1 million elements');
45+
p = new PriorityQueue();
46+
for (let i = 1000000; i >= 0; i--) {
47+
p.push(i);
48+
}
49+
console.timeEnd('1 million elements');
50+
51+
console.time('5 million elements');
52+
p = new PriorityQueue();
53+
for (let i = 5000000; i >= 0; i--) {
54+
p.push(i);
55+
}
56+
console.timeEnd('5 million elements');
57+
58+
console.time('10 million elements');
59+
p = new PriorityQueue();
60+
for (let i = 10000000; i >= 0; i--) {
61+
p.push(i);
62+
}
63+
console.timeEnd('10 million elements');
64+
65+
console.time('20 million elements');
66+
p = new PriorityQueue();
67+
for (let i = 20000000; i >= 0; i--) {
68+
p.push(i);
69+
}
70+
console.timeEnd('20 million elements');
71+
72+
console.time('30 million elements');
73+
p = new PriorityQueue();
74+
for (let i = 30000000; i >= 0; i--) {
75+
p.push(i);
76+
}
77+
console.timeEnd('30 million elements');

0 commit comments

Comments
 (0)