data-structure-typed 1.49.5 → 1.49.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/README.md +17 -23
- package/README_zh-CN.md +2 -0
- package/benchmark/report.html +14 -23
- package/benchmark/report.json +158 -251
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +53 -48
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +55 -49
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +153 -130
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +194 -153
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +83 -71
- package/dist/cjs/data-structures/binary-tree/bst.js +114 -91
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +37 -35
- package/dist/cjs/data-structures/binary-tree/rb-tree.js +62 -59
- package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multimap.d.ts +46 -39
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js +58 -51
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -1
- package/dist/cjs/data-structures/hash/hash-map.d.ts +24 -27
- package/dist/cjs/data-structures/hash/hash-map.js +35 -35
- package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
- package/dist/cjs/data-structures/hash/index.d.ts +0 -1
- package/dist/cjs/data-structures/hash/index.js +0 -1
- package/dist/cjs/data-structures/hash/index.js.map +1 -1
- package/dist/cjs/data-structures/heap/heap.d.ts +2 -1
- package/dist/cjs/data-structures/heap/heap.js +13 -13
- package/dist/cjs/data-structures/heap/heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/max-heap.js +1 -1
- package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/min-heap.js +1 -1
- package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +1 -1
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js +1 -3
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/skip-linked-list.d.ts +2 -8
- package/dist/cjs/data-structures/linked-list/skip-linked-list.js +15 -18
- package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/matrix/matrix.d.ts +2 -7
- package/dist/cjs/data-structures/matrix/matrix.js +0 -7
- package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.js +1 -1
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.js +1 -1
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/priority-queue.js +1 -1
- package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/queue/deque.d.ts +2 -11
- package/dist/cjs/data-structures/queue/deque.js +9 -13
- package/dist/cjs/data-structures/queue/deque.js.map +1 -1
- package/dist/cjs/data-structures/queue/queue.d.ts +13 -13
- package/dist/cjs/data-structures/queue/queue.js +29 -25
- package/dist/cjs/data-structures/queue/queue.js.map +1 -1
- package/dist/cjs/data-structures/stack/stack.js +2 -3
- package/dist/cjs/data-structures/stack/stack.js.map +1 -1
- package/dist/cjs/data-structures/trie/trie.d.ts +2 -2
- package/dist/cjs/data-structures/trie/trie.js +9 -5
- package/dist/cjs/data-structures/trie/trie.js.map +1 -1
- package/dist/cjs/interfaces/binary-tree.d.ts +3 -3
- package/dist/cjs/types/common.d.ts +3 -3
- package/dist/cjs/types/common.js +2 -2
- package/dist/cjs/types/common.js.map +1 -1
- package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +2 -2
- package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +1 -1
- package/dist/cjs/types/data-structures/binary-tree/tree-multimap.d.ts +1 -1
- package/dist/cjs/types/data-structures/hash/hash-map.d.ts +5 -2
- package/dist/cjs/types/data-structures/hash/index.d.ts +0 -1
- package/dist/cjs/types/data-structures/hash/index.js +0 -1
- package/dist/cjs/types/data-structures/hash/index.js.map +1 -1
- package/dist/cjs/types/data-structures/heap/heap.d.ts +1 -1
- package/dist/cjs/types/data-structures/linked-list/index.d.ts +1 -0
- package/dist/cjs/types/data-structures/linked-list/index.js +1 -0
- package/dist/cjs/types/data-structures/linked-list/index.js.map +1 -1
- package/dist/cjs/types/data-structures/linked-list/skip-linked-list.d.ts +4 -1
- package/dist/cjs/types/data-structures/matrix/index.d.ts +1 -0
- package/dist/cjs/types/data-structures/matrix/index.js +1 -0
- package/dist/cjs/types/data-structures/matrix/index.js.map +1 -1
- package/dist/cjs/types/data-structures/matrix/matrix.d.ts +7 -1
- package/dist/cjs/types/data-structures/queue/deque.d.ts +3 -1
- package/dist/cjs/types/data-structures/trie/trie.d.ts +3 -1
- package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +53 -48
- package/dist/mjs/data-structures/binary-tree/avl-tree.js +55 -49
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +153 -130
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +194 -153
- package/dist/mjs/data-structures/binary-tree/bst.d.ts +83 -71
- package/dist/mjs/data-structures/binary-tree/bst.js +114 -91
- package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +37 -35
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +62 -59
- package/dist/mjs/data-structures/binary-tree/tree-multimap.d.ts +46 -39
- package/dist/mjs/data-structures/binary-tree/tree-multimap.js +58 -51
- package/dist/mjs/data-structures/hash/hash-map.d.ts +24 -27
- package/dist/mjs/data-structures/hash/hash-map.js +35 -37
- package/dist/mjs/data-structures/hash/index.d.ts +0 -1
- package/dist/mjs/data-structures/hash/index.js +0 -1
- package/dist/mjs/data-structures/heap/heap.d.ts +2 -1
- package/dist/mjs/data-structures/heap/heap.js +19 -20
- package/dist/mjs/data-structures/heap/max-heap.js +1 -1
- package/dist/mjs/data-structures/heap/min-heap.js +1 -1
- package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +1 -1
- package/dist/mjs/data-structures/linked-list/singly-linked-list.js +2 -5
- package/dist/mjs/data-structures/linked-list/skip-linked-list.d.ts +2 -8
- package/dist/mjs/data-structures/linked-list/skip-linked-list.js +16 -23
- package/dist/mjs/data-structures/matrix/matrix.d.ts +2 -7
- package/dist/mjs/data-structures/matrix/matrix.js +0 -7
- package/dist/mjs/data-structures/priority-queue/max-priority-queue.js +1 -1
- package/dist/mjs/data-structures/priority-queue/min-priority-queue.js +1 -1
- package/dist/mjs/data-structures/priority-queue/priority-queue.js +1 -1
- package/dist/mjs/data-structures/queue/deque.d.ts +2 -11
- package/dist/mjs/data-structures/queue/deque.js +9 -14
- package/dist/mjs/data-structures/queue/queue.d.ts +13 -13
- package/dist/mjs/data-structures/queue/queue.js +30 -28
- package/dist/mjs/data-structures/stack/stack.js +3 -5
- package/dist/mjs/data-structures/trie/trie.d.ts +2 -2
- package/dist/mjs/data-structures/trie/trie.js +10 -9
- package/dist/mjs/interfaces/binary-tree.d.ts +3 -3
- package/dist/mjs/types/common.d.ts +3 -3
- package/dist/mjs/types/common.js +2 -2
- package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +2 -2
- package/dist/mjs/types/data-structures/binary-tree/bst.d.ts +1 -1
- package/dist/mjs/types/data-structures/binary-tree/tree-multimap.d.ts +1 -1
- package/dist/mjs/types/data-structures/hash/hash-map.d.ts +5 -2
- package/dist/mjs/types/data-structures/hash/index.d.ts +0 -1
- package/dist/mjs/types/data-structures/hash/index.js +0 -1
- package/dist/mjs/types/data-structures/heap/heap.d.ts +1 -1
- package/dist/mjs/types/data-structures/linked-list/index.d.ts +1 -0
- package/dist/mjs/types/data-structures/linked-list/index.js +1 -0
- package/dist/mjs/types/data-structures/linked-list/skip-linked-list.d.ts +4 -1
- package/dist/mjs/types/data-structures/matrix/index.d.ts +1 -0
- package/dist/mjs/types/data-structures/matrix/index.js +1 -0
- package/dist/mjs/types/data-structures/matrix/matrix.d.ts +7 -1
- package/dist/mjs/types/data-structures/queue/deque.d.ts +3 -1
- package/dist/mjs/types/data-structures/trie/trie.d.ts +3 -1
- package/dist/umd/data-structure-typed.js +620 -823
- package/dist/umd/data-structure-typed.min.js +2 -2
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +1 -1
- package/src/data-structures/binary-tree/avl-tree.ts +58 -53
- package/src/data-structures/binary-tree/binary-tree.ts +255 -211
- package/src/data-structures/binary-tree/bst.ts +126 -107
- package/src/data-structures/binary-tree/rb-tree.ts +66 -64
- package/src/data-structures/binary-tree/tree-multimap.ts +62 -56
- package/src/data-structures/hash/hash-map.ts +46 -50
- package/src/data-structures/hash/index.ts +0 -1
- package/src/data-structures/heap/heap.ts +20 -19
- package/src/data-structures/heap/max-heap.ts +1 -1
- package/src/data-structures/heap/min-heap.ts +1 -1
- package/src/data-structures/linked-list/doubly-linked-list.ts +1 -1
- package/src/data-structures/linked-list/singly-linked-list.ts +2 -5
- package/src/data-structures/linked-list/skip-linked-list.ts +15 -16
- package/src/data-structures/matrix/matrix.ts +2 -10
- package/src/data-structures/priority-queue/max-priority-queue.ts +1 -1
- package/src/data-structures/priority-queue/min-priority-queue.ts +1 -1
- package/src/data-structures/priority-queue/priority-queue.ts +1 -1
- package/src/data-structures/queue/deque.ts +11 -15
- package/src/data-structures/queue/queue.ts +29 -28
- package/src/data-structures/stack/stack.ts +3 -6
- package/src/data-structures/trie/trie.ts +10 -11
- package/src/interfaces/binary-tree.ts +3 -3
- package/src/types/common.ts +3 -3
- package/src/types/data-structures/binary-tree/binary-tree.ts +2 -2
- package/src/types/data-structures/binary-tree/bst.ts +1 -1
- package/src/types/data-structures/binary-tree/tree-multimap.ts +1 -1
- package/src/types/data-structures/hash/hash-map.ts +6 -2
- package/src/types/data-structures/hash/index.ts +0 -1
- package/src/types/data-structures/heap/heap.ts +1 -1
- package/src/types/data-structures/linked-list/index.ts +1 -0
- package/src/types/data-structures/linked-list/skip-linked-list.ts +1 -1
- package/src/types/data-structures/matrix/index.ts +1 -0
- package/src/types/data-structures/matrix/matrix.ts +7 -1
- package/src/types/data-structures/queue/deque.ts +1 -1
- package/src/types/data-structures/trie/trie.ts +1 -1
- package/test/performance/data-structures/binary-tree/avl-tree.test.ts +4 -12
- package/test/performance/data-structures/binary-tree/binary-tree-overall.test.ts +37 -0
- package/test/performance/data-structures/binary-tree/binary-tree.test.ts +6 -16
- package/test/performance/data-structures/binary-tree/bst.test.ts +5 -13
- package/test/performance/data-structures/binary-tree/rb-tree.test.ts +5 -15
- package/test/performance/data-structures/comparison/comparison.test.ts +13 -36
- package/test/performance/data-structures/graph/directed-graph.test.ts +3 -14
- package/test/performance/data-structures/hash/hash-map.test.ts +11 -34
- package/test/performance/data-structures/heap/heap.test.ts +5 -18
- package/test/performance/data-structures/linked-list/doubly-linked-list.test.ts +0 -1
- package/test/performance/data-structures/linked-list/singly-linked-list.test.ts +0 -2
- package/test/performance/data-structures/priority-queue/max-priority-queue.test.ts +2 -4
- package/test/performance/data-structures/priority-queue/priority-queue.test.ts +4 -14
- package/test/performance/data-structures/queue/queue.test.ts +8 -25
- package/test/performance/data-structures/stack/stack.test.ts +6 -18
- package/test/performance/data-structures/trie/trie.test.ts +2 -6
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +6 -5
- package/test/unit/data-structures/binary-tree/bst.test.ts +17 -1
- package/test/unit/data-structures/linked-list/skip-list.test.ts +1 -1
- package/test/unit/data-structures/queue/deque.test.ts +5 -5
- package/test/unit/data-structures/trie/trie.test.ts +1 -1
- package/dist/cjs/data-structures/hash/hash-table.d.ts +0 -108
- package/dist/cjs/data-structures/hash/hash-table.js +0 -282
- package/dist/cjs/data-structures/hash/hash-table.js.map +0 -1
- package/dist/cjs/types/data-structures/hash/hash-table.d.ts +0 -1
- package/dist/cjs/types/data-structures/hash/hash-table.js +0 -3
- package/dist/cjs/types/data-structures/hash/hash-table.js.map +0 -1
- package/dist/cjs/types/data-structures/matrix/matrix2d.d.ts +0 -1
- package/dist/cjs/types/data-structures/matrix/matrix2d.js +0 -3
- package/dist/cjs/types/data-structures/matrix/matrix2d.js.map +0 -1
- package/dist/cjs/types/data-structures/matrix/vector2d.d.ts +0 -1
- package/dist/cjs/types/data-structures/matrix/vector2d.js +0 -3
- package/dist/cjs/types/data-structures/matrix/vector2d.js.map +0 -1
- package/dist/mjs/data-structures/hash/hash-table.d.ts +0 -108
- package/dist/mjs/data-structures/hash/hash-table.js +0 -283
- package/dist/mjs/types/data-structures/hash/hash-table.d.ts +0 -1
- package/dist/mjs/types/data-structures/hash/hash-table.js +0 -1
- package/dist/mjs/types/data-structures/matrix/matrix2d.d.ts +0 -1
- package/dist/mjs/types/data-structures/matrix/matrix2d.js +0 -1
- package/dist/mjs/types/data-structures/matrix/vector2d.d.ts +0 -1
- package/dist/mjs/types/data-structures/matrix/vector2d.js +0 -1
- package/src/data-structures/hash/hash-table.ts +0 -318
- package/src/types/data-structures/hash/hash-table.ts +0 -1
- package/src/types/data-structures/matrix/matrix2d.ts +0 -1
- package/src/types/data-structures/matrix/vector2d.ts +0 -1
- package/test/performance/data-structures/binary-tree/overall.test.ts +0 -0
- package/test/performance/data-structures/matrix/matrix2d.test.ts +0 -0
- package/test/performance/data-structures/matrix/vector2d.test.ts +0 -0
- package/test/unit/data-structures/hash/hash-table.test.ts +0 -238
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export type SkipLinkedListOptions = { maxLevel?: number; probability?: number };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export type DequeOptions = { bucketSize?: number };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export type TrieOptions = { caseSensitive?: boolean };
|
|
@@ -10,27 +10,19 @@ const arr = getRandomIntArray(TEN_THOUSAND, 0, TEN_THOUSAND, true);
|
|
|
10
10
|
suite
|
|
11
11
|
.add(`${TEN_THOUSAND.toLocaleString()} add randomly`, () => {
|
|
12
12
|
avl.clear();
|
|
13
|
-
for (let i = 0; i < arr.length; i++)
|
|
14
|
-
avl.add(arr[i]);
|
|
15
|
-
}
|
|
13
|
+
for (let i = 0; i < arr.length; i++) avl.add(arr[i]);
|
|
16
14
|
})
|
|
17
15
|
.add(`${TEN_THOUSAND.toLocaleString()} add & delete randomly`, () => {
|
|
18
16
|
avl.clear();
|
|
19
|
-
for (let i = 0; i < arr.length; i++)
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
for (let i = 0; i < arr.length; i++) {
|
|
23
|
-
avl.delete(arr[i]);
|
|
24
|
-
}
|
|
17
|
+
for (let i = 0; i < arr.length; i++) avl.add(arr[i]);
|
|
18
|
+
for (let i = 0; i < arr.length; i++) avl.delete(arr[i]);
|
|
25
19
|
})
|
|
26
20
|
.add(`${TEN_THOUSAND.toLocaleString()} addMany`, () => {
|
|
27
21
|
avl.clear();
|
|
28
22
|
avl.addMany(arr);
|
|
29
23
|
})
|
|
30
24
|
.add(`${TEN_THOUSAND.toLocaleString()} get`, () => {
|
|
31
|
-
for (let i = 0; i < arr.length; i++)
|
|
32
|
-
avl.get(arr[i]);
|
|
33
|
-
}
|
|
25
|
+
for (let i = 0; i < arr.length; i++) avl.get(arr[i]);
|
|
34
26
|
});
|
|
35
27
|
|
|
36
28
|
export { suite };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AVLTree, RedBlackTree } from '../../../../src';
|
|
2
|
+
import * as Benchmark from 'benchmark';
|
|
3
|
+
import { getRandomIntArray, magnitude } from '../../../utils';
|
|
4
|
+
|
|
5
|
+
const suite = new Benchmark.Suite();
|
|
6
|
+
const rbTree = new RedBlackTree();
|
|
7
|
+
const avlTree = new AVLTree();
|
|
8
|
+
const { TEN_THOUSAND } = magnitude;
|
|
9
|
+
const arr = getRandomIntArray(TEN_THOUSAND, 0, TEN_THOUSAND, true);
|
|
10
|
+
|
|
11
|
+
suite
|
|
12
|
+
.add(`${TEN_THOUSAND.toLocaleString()} RBTree add`, () => {
|
|
13
|
+
rbTree.clear();
|
|
14
|
+
for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
|
|
15
|
+
})
|
|
16
|
+
.add(`${TEN_THOUSAND.toLocaleString()} RBTree add & delete randomly`, () => {
|
|
17
|
+
rbTree.clear();
|
|
18
|
+
for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
|
|
19
|
+
for (let i = 0; i < arr.length; i++) rbTree.delete(arr[i]);
|
|
20
|
+
})
|
|
21
|
+
.add(`${TEN_THOUSAND.toLocaleString()} RBTree get`, () => {
|
|
22
|
+
for (let i = 0; i < arr.length; i++) rbTree.get(arr[i]);
|
|
23
|
+
})
|
|
24
|
+
.add(`${TEN_THOUSAND.toLocaleString()} AVLTree add`, () => {
|
|
25
|
+
avlTree.clear();
|
|
26
|
+
for (let i = 0; i < arr.length; i++) avlTree.add(arr[i]);
|
|
27
|
+
})
|
|
28
|
+
.add(`${TEN_THOUSAND.toLocaleString()} AVLTree add & delete randomly`, () => {
|
|
29
|
+
avlTree.clear();
|
|
30
|
+
for (let i = 0; i < arr.length; i++) avlTree.add(arr[i]);
|
|
31
|
+
for (let i = 0; i < arr.length; i++) avlTree.delete(arr[i]);
|
|
32
|
+
})
|
|
33
|
+
.add(`${TEN_THOUSAND.toLocaleString()} AVLTree get`, () => {
|
|
34
|
+
for (let i = 0; i < arr.length; i++) avlTree.get(arr[i]);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
export { suite };
|
|
@@ -10,32 +10,22 @@ const arr = getRandomIntArray(THOUSAND, 0, THOUSAND, true);
|
|
|
10
10
|
suite
|
|
11
11
|
.add(`${THOUSAND.toLocaleString()} add randomly`, () => {
|
|
12
12
|
biTree.clear();
|
|
13
|
-
for (let i = 0; i < arr.length; i++)
|
|
14
|
-
biTree.add(arr[i]);
|
|
15
|
-
}
|
|
13
|
+
for (let i = 0; i < arr.length; i++) biTree.add(arr[i]);
|
|
16
14
|
})
|
|
17
15
|
.add(`${THOUSAND.toLocaleString()} add & delete randomly`, () => {
|
|
18
16
|
biTree.clear();
|
|
19
|
-
for (let i = 0; i < arr.length; i++)
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
for (let i = 0; i < arr.length; i++) {
|
|
23
|
-
biTree.delete(arr[i]);
|
|
24
|
-
}
|
|
17
|
+
for (let i = 0; i < arr.length; i++) biTree.add(arr[i]);
|
|
18
|
+
for (let i = 0; i < arr.length; i++) biTree.delete(arr[i]);
|
|
25
19
|
})
|
|
26
20
|
.add(`${THOUSAND.toLocaleString()} addMany`, () => {
|
|
27
21
|
biTree.clear();
|
|
28
22
|
biTree.addMany(arr);
|
|
29
23
|
})
|
|
30
24
|
.add(`${THOUSAND.toLocaleString()} get`, () => {
|
|
31
|
-
for (let i = 0; i < arr.length; i++)
|
|
32
|
-
biTree.get(arr[i]);
|
|
33
|
-
}
|
|
25
|
+
for (let i = 0; i < arr.length; i++) biTree.get(arr[i]);
|
|
34
26
|
})
|
|
35
27
|
.add(`${THOUSAND.toLocaleString()} has`, () => {
|
|
36
|
-
for (let i = 0; i < arr.length; i++)
|
|
37
|
-
biTree.get(arr[i]);
|
|
38
|
-
}
|
|
28
|
+
for (let i = 0; i < arr.length; i++) biTree.get(arr[i]);
|
|
39
29
|
})
|
|
40
30
|
.add(`${THOUSAND.toLocaleString()} dfs`, () => {
|
|
41
31
|
for (let i = 0; i < THOUSAND; i++) biTree.dfs();
|
|
@@ -47,4 +37,4 @@ suite
|
|
|
47
37
|
for (let i = 0; i < THOUSAND; i++) biTree.morris(n => n, 'pre');
|
|
48
38
|
});
|
|
49
39
|
|
|
50
|
-
export { suite };
|
|
40
|
+
// export { suite };
|
|
@@ -10,27 +10,19 @@ const arr = getRandomIntArray(TEN_THOUSAND, 0, TEN_THOUSAND, true);
|
|
|
10
10
|
suite
|
|
11
11
|
.add(`${TEN_THOUSAND.toLocaleString()} add randomly`, () => {
|
|
12
12
|
bst.clear();
|
|
13
|
-
for (let i = 0; i < arr.length; i++)
|
|
14
|
-
bst.add(arr[i]);
|
|
15
|
-
}
|
|
13
|
+
for (let i = 0; i < arr.length; i++) bst.add(arr[i]);
|
|
16
14
|
})
|
|
17
15
|
.add(`${TEN_THOUSAND.toLocaleString()} add & delete randomly`, () => {
|
|
18
16
|
bst.clear();
|
|
19
|
-
for (let i = 0; i < arr.length; i++)
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
for (let i = 0; i < arr.length; i++) {
|
|
23
|
-
bst.delete(arr[i]);
|
|
24
|
-
}
|
|
17
|
+
for (let i = 0; i < arr.length; i++) bst.add(arr[i]);
|
|
18
|
+
for (let i = 0; i < arr.length; i++) bst.delete(arr[i]);
|
|
25
19
|
})
|
|
26
20
|
.add(`${TEN_THOUSAND.toLocaleString()} addMany`, () => {
|
|
27
21
|
bst.clear();
|
|
28
22
|
bst.addMany(arr);
|
|
29
23
|
})
|
|
30
24
|
.add(`${TEN_THOUSAND.toLocaleString()} get`, () => {
|
|
31
|
-
for (let i = 0; i < arr.length; i++)
|
|
32
|
-
bst.get(arr[i]);
|
|
33
|
-
}
|
|
25
|
+
for (let i = 0; i < arr.length; i++) bst.get(arr[i]);
|
|
34
26
|
});
|
|
35
27
|
|
|
36
|
-
export { suite };
|
|
28
|
+
// export { suite };
|
|
@@ -12,33 +12,23 @@ const cOrderedMap = new OrderedMap<number, number>();
|
|
|
12
12
|
|
|
13
13
|
suite.add(`${HUNDRED_THOUSAND.toLocaleString()} add`, () => {
|
|
14
14
|
rbTree.clear();
|
|
15
|
-
for (let i = 0; i < arr.length; i++)
|
|
16
|
-
rbTree.add(arr[i]);
|
|
17
|
-
}
|
|
15
|
+
for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
|
|
18
16
|
});
|
|
19
17
|
|
|
20
18
|
if (isCompetitor) {
|
|
21
19
|
suite.add(`CPT ${HUNDRED_THOUSAND.toLocaleString()} add`, () => {
|
|
22
|
-
for (let i = 0; i < arr.length; i++)
|
|
23
|
-
cOrderedMap.setElement(arr[i], arr[i]);
|
|
24
|
-
}
|
|
20
|
+
for (let i = 0; i < arr.length; i++) cOrderedMap.setElement(arr[i], arr[i]);
|
|
25
21
|
});
|
|
26
22
|
}
|
|
27
23
|
|
|
28
24
|
suite
|
|
29
25
|
.add(`${HUNDRED_THOUSAND.toLocaleString()} add & delete randomly`, () => {
|
|
30
26
|
rbTree.clear();
|
|
31
|
-
for (let i = 0; i < arr.length; i++)
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
for (let i = 0; i < arr.length; i++) {
|
|
35
|
-
rbTree.delete(arr[i]);
|
|
36
|
-
}
|
|
27
|
+
for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
|
|
28
|
+
for (let i = 0; i < arr.length; i++) rbTree.delete(arr[i]);
|
|
37
29
|
})
|
|
38
30
|
.add(`${HUNDRED_THOUSAND.toLocaleString()} getNode`, () => {
|
|
39
|
-
for (let i = 0; i < arr.length; i++)
|
|
40
|
-
rbTree.getNode(arr[i]);
|
|
41
|
-
}
|
|
31
|
+
for (let i = 0; i < arr.length; i++) rbTree.getNode(arr[i]);
|
|
42
32
|
});
|
|
43
33
|
|
|
44
34
|
suite.add(`${HUNDRED_THOUSAND.toLocaleString()} add & iterator`, () => {
|
|
@@ -70,75 +70,52 @@ if (isCompetitor) {
|
|
|
70
70
|
for (let i = 0; i < TEN_THOUSAND; i++) pq.pop();
|
|
71
71
|
})
|
|
72
72
|
.add(`CPT OM ${HUNDRED_THOUSAND.toLocaleString()} add`, () => {
|
|
73
|
-
for (let i = 0; i < arrHundredThousand.length; i++)
|
|
73
|
+
for (let i = 0; i < arrHundredThousand.length; i++)
|
|
74
74
|
cOrderedMap.setElement(arrHundredThousand[i], arrHundredThousand[i]);
|
|
75
|
-
}
|
|
76
75
|
})
|
|
77
76
|
.add(`CPT HM ${TEN_THOUSAND.toLocaleString()} set`, () => {
|
|
78
77
|
const hm = new CHashMap<number, number>();
|
|
79
78
|
|
|
80
|
-
for (let i = 0; i < TEN_THOUSAND; i++)
|
|
81
|
-
hm.setElement(i, i);
|
|
82
|
-
}
|
|
79
|
+
for (let i = 0; i < TEN_THOUSAND; i++) hm.setElement(i, i);
|
|
83
80
|
})
|
|
84
81
|
.add(`CPT HM ${TEN_THOUSAND.toLocaleString()} set & get`, () => {
|
|
85
82
|
const hm = new CHashMap<number, number>();
|
|
86
83
|
|
|
87
|
-
for (let i = 0; i < TEN_THOUSAND; i++)
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
for (let i = 0; i < TEN_THOUSAND; i++) {
|
|
91
|
-
hm.getElementByKey(i);
|
|
92
|
-
}
|
|
84
|
+
for (let i = 0; i < TEN_THOUSAND; i++) hm.setElement(i, i);
|
|
85
|
+
for (let i = 0; i < TEN_THOUSAND; i++) hm.getElementByKey(i);
|
|
93
86
|
})
|
|
94
87
|
.add(`CPT LL ${MILLION.toLocaleString()} unshift`, () => {
|
|
95
88
|
const list = new CLinkedList<number>();
|
|
96
89
|
|
|
97
|
-
for (let i = 0; i < MILLION; i++)
|
|
98
|
-
list.pushFront(i);
|
|
99
|
-
}
|
|
90
|
+
for (let i = 0; i < MILLION; i++) list.pushFront(i);
|
|
100
91
|
})
|
|
101
92
|
.add(`CPT PQ ${TEN_THOUSAND.toLocaleString()} add & pop`, () => {
|
|
102
93
|
const pq = new CPriorityQueue<number>();
|
|
103
94
|
|
|
104
|
-
for (let i = 0; i < TEN_THOUSAND; i++)
|
|
105
|
-
pq.push(i);
|
|
106
|
-
}
|
|
95
|
+
for (let i = 0; i < TEN_THOUSAND; i++) pq.push(i);
|
|
107
96
|
|
|
108
|
-
for (let i = 0; i < TEN_THOUSAND; i++)
|
|
109
|
-
pq.pop();
|
|
110
|
-
}
|
|
97
|
+
for (let i = 0; i < TEN_THOUSAND; i++) pq.pop();
|
|
111
98
|
})
|
|
112
99
|
.add(`CPT DQ ${MILLION.toLocaleString()} push`, () => {
|
|
113
100
|
const deque = new CDeque<number>();
|
|
114
|
-
for (let i = 0; i < MILLION; i++)
|
|
115
|
-
deque.pushBack(i);
|
|
116
|
-
}
|
|
101
|
+
for (let i = 0; i < MILLION; i++) deque.pushBack(i);
|
|
117
102
|
})
|
|
118
103
|
.add(`CPT Q ${MILLION.toLocaleString()} push`, () => {
|
|
119
104
|
const queue = new CQueue<number>();
|
|
120
105
|
|
|
121
|
-
for (let i = 0; i < MILLION; i++)
|
|
122
|
-
queue.push(i);
|
|
123
|
-
}
|
|
106
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
124
107
|
})
|
|
125
108
|
.add(`CPT ST ${MILLION.toLocaleString()} push`, () => {
|
|
126
109
|
const queue = new CStack<number>();
|
|
127
110
|
|
|
128
|
-
for (let i = 0; i < MILLION; i++)
|
|
129
|
-
queue.push(i);
|
|
130
|
-
}
|
|
111
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
131
112
|
})
|
|
132
113
|
.add(`CPT ST ${MILLION.toLocaleString()} push & pop`, () => {
|
|
133
114
|
const queue = new CStack<number>();
|
|
134
115
|
|
|
135
|
-
for (let i = 0; i < MILLION; i++)
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
for (let i = 0; i < MILLION; i++) {
|
|
139
|
-
queue.pop();
|
|
140
|
-
}
|
|
116
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
117
|
+
for (let i = 0; i < MILLION; i++) queue.pop();
|
|
141
118
|
});
|
|
142
119
|
}
|
|
143
120
|
|
|
144
|
-
export { suite };
|
|
121
|
+
// export { suite };
|
|
@@ -9,9 +9,7 @@ const vertexes = getRandomWords(THOUSAND);
|
|
|
9
9
|
|
|
10
10
|
suite
|
|
11
11
|
.add(`${THOUSAND.toLocaleString()} addVertex`, () => {
|
|
12
|
-
for (const v of vertexes)
|
|
13
|
-
graph.addVertex(v);
|
|
14
|
-
}
|
|
12
|
+
for (const v of vertexes) graph.addVertex(v);
|
|
15
13
|
})
|
|
16
14
|
.add(`${THOUSAND.toLocaleString()} addEdge`, () => {
|
|
17
15
|
for (let i = 0; i < THOUSAND; i++) {
|
|
@@ -21,29 +19,20 @@ suite
|
|
|
21
19
|
}
|
|
22
20
|
})
|
|
23
21
|
.add(`${THOUSAND.toLocaleString()} getVertex`, () => {
|
|
24
|
-
for (let i = 0; i < THOUSAND; i++)
|
|
25
|
-
graph.getVertex(vertexes[getRandomIndex(vertexes)]);
|
|
26
|
-
}
|
|
22
|
+
for (let i = 0; i < THOUSAND; i++) graph.getVertex(vertexes[getRandomIndex(vertexes)]);
|
|
27
23
|
})
|
|
28
24
|
.add(`${THOUSAND.toLocaleString()} getEdge`, () => {
|
|
29
|
-
for (let i = 0; i < THOUSAND; i++)
|
|
25
|
+
for (let i = 0; i < THOUSAND; i++)
|
|
30
26
|
graph.getEdge(vertexes[getRandomIndex(vertexes)], vertexes[getRandomIndex(vertexes)]);
|
|
31
|
-
}
|
|
32
27
|
})
|
|
33
28
|
.add(`tarjan`, () => {
|
|
34
|
-
// for (let i = 0; i < THOUSAND; i++) {
|
|
35
29
|
graph.tarjan(true);
|
|
36
|
-
// }
|
|
37
30
|
})
|
|
38
31
|
.add(`tarjan all`, () => {
|
|
39
|
-
// for (let i = 0; i < THOUSAND; i++) {
|
|
40
32
|
graph.tarjan(true, true, true, true);
|
|
41
|
-
// }
|
|
42
33
|
})
|
|
43
34
|
.add(`topologicalSort`, () => {
|
|
44
|
-
// for (let i = 0; i < THOUSAND; i++) {
|
|
45
35
|
graph.topologicalSort('key');
|
|
46
|
-
// }
|
|
47
36
|
});
|
|
48
37
|
|
|
49
38
|
export { suite };
|
|
@@ -10,18 +10,14 @@ const { MILLION } = magnitude;
|
|
|
10
10
|
suite.add(`${MILLION.toLocaleString()} set`, () => {
|
|
11
11
|
const hm = new HashMap<number, number>();
|
|
12
12
|
|
|
13
|
-
for (let i = 0; i < MILLION; i++)
|
|
14
|
-
hm.set(i, i);
|
|
15
|
-
}
|
|
13
|
+
for (let i = 0; i < MILLION; i++) hm.set(i, i);
|
|
16
14
|
});
|
|
17
15
|
|
|
18
16
|
if (isCompetitor) {
|
|
19
17
|
suite.add(`CPT ${MILLION.toLocaleString()} set`, () => {
|
|
20
18
|
const hm = new CHashMap<number, number>();
|
|
21
19
|
|
|
22
|
-
for (let i = 0; i < MILLION; i++)
|
|
23
|
-
hm.setElement(i, i);
|
|
24
|
-
}
|
|
20
|
+
for (let i = 0; i < MILLION; i++) hm.setElement(i, i);
|
|
25
21
|
});
|
|
26
22
|
}
|
|
27
23
|
|
|
@@ -40,43 +36,30 @@ suite.add(`Native Set ${MILLION.toLocaleString()} add`, () => {
|
|
|
40
36
|
suite.add(`${MILLION.toLocaleString()} set & get`, () => {
|
|
41
37
|
const hm = new HashMap<number, number>();
|
|
42
38
|
|
|
43
|
-
for (let i = 0; i < MILLION; i++)
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
for (let i = 0; i < MILLION; i++) {
|
|
47
|
-
hm.get(i);
|
|
48
|
-
}
|
|
39
|
+
for (let i = 0; i < MILLION; i++) hm.set(i, i);
|
|
40
|
+
for (let i = 0; i < MILLION; i++) hm.get(i);
|
|
49
41
|
});
|
|
50
42
|
|
|
51
43
|
if (isCompetitor) {
|
|
52
44
|
suite.add(`CPT ${MILLION.toLocaleString()} set & get`, () => {
|
|
53
45
|
const hm = new CHashMap<number, number>();
|
|
54
46
|
|
|
55
|
-
for (let i = 0; i < MILLION; i++)
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
for (let i = 0; i < MILLION; i++) {
|
|
59
|
-
hm.getElementByKey(i);
|
|
60
|
-
}
|
|
47
|
+
for (let i = 0; i < MILLION; i++) hm.setElement(i, i);
|
|
48
|
+
for (let i = 0; i < MILLION; i++) hm.getElementByKey(i);
|
|
61
49
|
});
|
|
62
50
|
}
|
|
63
51
|
|
|
64
52
|
suite.add(`Native Map ${MILLION.toLocaleString()} set & get`, () => {
|
|
65
53
|
const hm = new Map<number, number>();
|
|
66
54
|
|
|
67
|
-
for (let i = 0; i < MILLION; i++)
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
for (let i = 0; i < MILLION; i++) {
|
|
71
|
-
hm.get(i);
|
|
72
|
-
}
|
|
55
|
+
for (let i = 0; i < MILLION; i++) hm.set(i, i);
|
|
56
|
+
for (let i = 0; i < MILLION; i++) hm.get(i);
|
|
73
57
|
});
|
|
74
58
|
|
|
75
59
|
suite.add(`Native Set ${MILLION.toLocaleString()} add & has`, () => {
|
|
76
60
|
const hs = new Set<number>();
|
|
77
61
|
|
|
78
62
|
for (let i = 0; i < MILLION; i++) hs.add(i);
|
|
79
|
-
|
|
80
63
|
for (let i = 0; i < MILLION; i++) hs.has(i);
|
|
81
64
|
});
|
|
82
65
|
|
|
@@ -88,9 +71,7 @@ suite.add(`${MILLION.toLocaleString()} ObjKey set & get`, () => {
|
|
|
88
71
|
objKeys.push(obj);
|
|
89
72
|
hm.set(obj, i);
|
|
90
73
|
}
|
|
91
|
-
for (let i = 0; i < MILLION; i++)
|
|
92
|
-
hm.get(objKeys[i]);
|
|
93
|
-
}
|
|
74
|
+
for (let i = 0; i < MILLION; i++) hm.get(objKeys[i]);
|
|
94
75
|
});
|
|
95
76
|
|
|
96
77
|
suite.add(`Native Map ${MILLION.toLocaleString()} ObjKey set & get`, () => {
|
|
@@ -101,9 +82,7 @@ suite.add(`Native Map ${MILLION.toLocaleString()} ObjKey set & get`, () => {
|
|
|
101
82
|
objs.push(obj);
|
|
102
83
|
hm.set(obj, i);
|
|
103
84
|
}
|
|
104
|
-
for (let i = 0; i < MILLION; i++)
|
|
105
|
-
hm.get(objs[i]);
|
|
106
|
-
}
|
|
85
|
+
for (let i = 0; i < MILLION; i++) hm.get(objs[i]);
|
|
107
86
|
});
|
|
108
87
|
|
|
109
88
|
suite.add(`Native Set ${MILLION.toLocaleString()} ObjKey add & has`, () => {
|
|
@@ -114,9 +93,7 @@ suite.add(`Native Set ${MILLION.toLocaleString()} ObjKey add & has`, () => {
|
|
|
114
93
|
objs.push(obj);
|
|
115
94
|
hs.add(obj);
|
|
116
95
|
}
|
|
117
|
-
for (let i = 0; i < MILLION; i++)
|
|
118
|
-
hs.has(objs[i]);
|
|
119
|
-
}
|
|
96
|
+
for (let i = 0; i < MILLION; i++) hs.has(objs[i]);
|
|
120
97
|
});
|
|
121
98
|
|
|
122
99
|
export { suite };
|
|
@@ -9,31 +9,18 @@ suite
|
|
|
9
9
|
.add(`${HUNDRED_THOUSAND.toLocaleString()} add & poll`, () => {
|
|
10
10
|
const heap = new Heap<number>([], { comparator: (a, b) => b - a });
|
|
11
11
|
|
|
12
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++)
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++) {
|
|
17
|
-
heap.poll();
|
|
18
|
-
}
|
|
12
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) heap.add(i);
|
|
13
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) heap.poll();
|
|
19
14
|
})
|
|
20
15
|
.add(`${HUNDRED_THOUSAND.toLocaleString()} add & dfs`, () => {
|
|
21
16
|
const heap = new Heap<number>([], { comparator: (a, b) => b - a });
|
|
22
|
-
|
|
23
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++) {
|
|
24
|
-
heap.add(i);
|
|
25
|
-
}
|
|
26
|
-
|
|
17
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) heap.add(i);
|
|
27
18
|
heap.dfs();
|
|
28
19
|
})
|
|
29
20
|
.add(`${TEN_THOUSAND.toLocaleString()} fib add & pop`, () => {
|
|
30
21
|
const fbHeap = new FibonacciHeap<number>();
|
|
31
|
-
for (let i = 1; i <= TEN_THOUSAND; i++)
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
for (let i = 1; i <= TEN_THOUSAND; i++) {
|
|
35
|
-
fbHeap.pop();
|
|
36
|
-
}
|
|
22
|
+
for (let i = 1; i <= TEN_THOUSAND; i++) fbHeap.push(i);
|
|
23
|
+
for (let i = 1; i <= TEN_THOUSAND; i++) fbHeap.pop();
|
|
37
24
|
});
|
|
38
25
|
|
|
39
26
|
export { suite };
|
|
@@ -10,14 +10,12 @@ suite
|
|
|
10
10
|
const list = new SinglyLinkedList<number>();
|
|
11
11
|
|
|
12
12
|
for (let i = 0; i < MILLION; i++) list.push(i);
|
|
13
|
-
|
|
14
13
|
for (let i = 0; i < MILLION; i++) list.shift();
|
|
15
14
|
})
|
|
16
15
|
.add(`${TEN_THOUSAND.toLocaleString()} push & pop`, () => {
|
|
17
16
|
const list = new SinglyLinkedList<number>();
|
|
18
17
|
|
|
19
18
|
for (let i = 0; i < TEN_THOUSAND; i++) list.push(i);
|
|
20
|
-
|
|
21
19
|
for (let i = 0; i < TEN_THOUSAND; i++) list.pop();
|
|
22
20
|
})
|
|
23
21
|
.add(`${TEN_THOUSAND.toLocaleString()} addBefore`, () => {
|
|
@@ -11,9 +11,7 @@ suite.add(`${TEN_THOUSAND.toLocaleString()} refill & poll`, () => {
|
|
|
11
11
|
);
|
|
12
12
|
const maxPQ = new MaxPriorityQueue<number>();
|
|
13
13
|
maxPQ.refill(nodes);
|
|
14
|
-
while (maxPQ.size > 0)
|
|
15
|
-
maxPQ.poll();
|
|
16
|
-
}
|
|
14
|
+
while (maxPQ.size > 0) maxPQ.poll();
|
|
17
15
|
});
|
|
18
16
|
|
|
19
|
-
export { suite };
|
|
17
|
+
// export { suite };
|
|
@@ -10,25 +10,15 @@ const { HUNDRED_THOUSAND } = magnitude;
|
|
|
10
10
|
suite.add(`${HUNDRED_THOUSAND.toLocaleString()} add & poll`, () => {
|
|
11
11
|
const pq = new PriorityQueue<number>([], { comparator: (a, b) => b - a });
|
|
12
12
|
|
|
13
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++)
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++) {
|
|
18
|
-
pq.poll();
|
|
19
|
-
}
|
|
13
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) pq.add(i);
|
|
14
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) pq.poll();
|
|
20
15
|
});
|
|
21
16
|
if (isCompetitor) {
|
|
22
17
|
suite.add(`CPT ${HUNDRED_THOUSAND.toLocaleString()} add & pop`, () => {
|
|
23
18
|
const pq = new CPriorityQueue<number>();
|
|
24
19
|
|
|
25
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++)
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++) {
|
|
30
|
-
pq.pop();
|
|
31
|
-
}
|
|
20
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) pq.push(i);
|
|
21
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) pq.pop();
|
|
32
22
|
});
|
|
33
23
|
}
|
|
34
24
|
|
|
@@ -10,50 +10,33 @@ const { MILLION, HUNDRED_THOUSAND } = magnitude;
|
|
|
10
10
|
suite.add(`${MILLION.toLocaleString()} push`, () => {
|
|
11
11
|
const queue = new Queue<number>();
|
|
12
12
|
|
|
13
|
-
for (let i = 0; i < MILLION; i++)
|
|
14
|
-
queue.push(i);
|
|
15
|
-
}
|
|
13
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
16
14
|
});
|
|
17
15
|
if (isCompetitor) {
|
|
18
16
|
suite.add(`CPT ${MILLION.toLocaleString()} push`, () => {
|
|
19
17
|
const queue = new CQueue<number>();
|
|
20
18
|
|
|
21
|
-
for (let i = 0; i < MILLION; i++)
|
|
22
|
-
queue.push(i);
|
|
23
|
-
}
|
|
19
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
24
20
|
});
|
|
25
21
|
}
|
|
26
22
|
suite.add(`${HUNDRED_THOUSAND.toLocaleString()} push & shift`, () => {
|
|
27
23
|
const queue = new Queue<number>();
|
|
28
24
|
|
|
29
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++)
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++) {
|
|
33
|
-
queue.shift();
|
|
34
|
-
}
|
|
25
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) queue.push(i);
|
|
26
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) queue.shift();
|
|
35
27
|
});
|
|
36
28
|
suite
|
|
37
29
|
.add(`Native Array ${HUNDRED_THOUSAND.toLocaleString()} push & shift`, () => {
|
|
38
30
|
const arr = new Array<number>();
|
|
39
31
|
|
|
40
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++)
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++) {
|
|
44
|
-
arr.shift();
|
|
45
|
-
}
|
|
32
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) arr.push(i);
|
|
33
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) arr.shift();
|
|
46
34
|
})
|
|
47
35
|
.add(`Native Array ${HUNDRED_THOUSAND.toLocaleString()} push & pop`, () => {
|
|
48
36
|
const arr = new Array<number>();
|
|
49
37
|
|
|
50
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++)
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
for (let i = 0; i < HUNDRED_THOUSAND; i++) {
|
|
55
|
-
arr.pop();
|
|
56
|
-
}
|
|
38
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) arr.push(i);
|
|
39
|
+
for (let i = 0; i < HUNDRED_THOUSAND; i++) arr.pop();
|
|
57
40
|
});
|
|
58
41
|
|
|
59
42
|
export { suite };
|
|
@@ -10,39 +10,27 @@ const { MILLION } = magnitude;
|
|
|
10
10
|
suite.add(`${MILLION.toLocaleString()} push`, () => {
|
|
11
11
|
const stack = new Stack<number>();
|
|
12
12
|
|
|
13
|
-
for (let i = 0; i < MILLION; i++)
|
|
14
|
-
stack.push(i);
|
|
15
|
-
}
|
|
13
|
+
for (let i = 0; i < MILLION; i++) stack.push(i);
|
|
16
14
|
});
|
|
17
15
|
if (isCompetitor) {
|
|
18
16
|
suite.add(`CPT ${MILLION.toLocaleString()} push`, () => {
|
|
19
17
|
const queue = new CStack<number>();
|
|
20
18
|
|
|
21
|
-
for (let i = 0; i < MILLION; i++)
|
|
22
|
-
queue.push(i);
|
|
23
|
-
}
|
|
19
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
24
20
|
});
|
|
25
21
|
}
|
|
26
22
|
suite.add(`${MILLION.toLocaleString()} push & pop`, () => {
|
|
27
23
|
const queue = new Stack<number>();
|
|
28
24
|
|
|
29
|
-
for (let i = 0; i < MILLION; i++)
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
for (let i = 0; i < MILLION; i++) {
|
|
33
|
-
queue.pop();
|
|
34
|
-
}
|
|
25
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
26
|
+
for (let i = 0; i < MILLION; i++) queue.pop();
|
|
35
27
|
});
|
|
36
28
|
if (isCompetitor) {
|
|
37
29
|
suite.add(`CPT ${MILLION.toLocaleString()} push & pop`, () => {
|
|
38
30
|
const queue = new CStack<number>();
|
|
39
31
|
|
|
40
|
-
for (let i = 0; i < MILLION; i++)
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
for (let i = 0; i < MILLION; i++) {
|
|
44
|
-
queue.pop();
|
|
45
|
-
}
|
|
32
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
33
|
+
for (let i = 0; i < MILLION; i++) queue.pop();
|
|
46
34
|
});
|
|
47
35
|
}
|
|
48
36
|
|