data-structure-typed 1.49.4 → 1.49.6
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 +15 -26
- package/README_zh-CN.md +1 -1
- package/benchmark/report.html +14 -23
- package/benchmark/report.json +163 -256
- package/dist/cjs/data-structures/base/iterable-base.d.ts +1 -1
- package/dist/cjs/data-structures/base/iterable-base.js.map +1 -1
- 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 +154 -143
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +211 -198
- 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 +113 -89
- 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 -55
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js +59 -94
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -1
- package/dist/cjs/data-structures/graph/abstract-graph.d.ts +1 -1
- package/dist/cjs/data-structures/graph/abstract-graph.js +3 -2
- package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/map-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
- package/dist/cjs/data-structures/hash/hash-map.d.ts +1 -1
- package/dist/cjs/data-structures/hash/hash-map.js +2 -2
- package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
- package/dist/cjs/data-structures/heap/heap.js +2 -3
- package/dist/cjs/data-structures/heap/heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +2 -2
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/matrix/index.d.ts +0 -2
- package/dist/cjs/data-structures/matrix/index.js +0 -2
- package/dist/cjs/data-structures/matrix/index.js.map +1 -1
- package/dist/cjs/data-structures/matrix/matrix.d.ts +128 -10
- package/dist/cjs/data-structures/matrix/matrix.js +400 -15
- package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/queue/deque.d.ts +2 -2
- package/dist/cjs/data-structures/queue/deque.js +5 -7
- package/dist/cjs/data-structures/queue/deque.js.map +1 -1
- package/dist/cjs/data-structures/queue/queue.d.ts +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/base/base.d.ts +1 -1
- package/dist/cjs/types/data-structures/heap/heap.d.ts +1 -1
- package/dist/cjs/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
- package/dist/cjs/utils/utils.d.ts +1 -0
- package/dist/cjs/utils/utils.js +6 -1
- package/dist/cjs/utils/utils.js.map +1 -1
- package/dist/mjs/data-structures/base/iterable-base.d.ts +1 -1
- package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +53 -48
- package/dist/mjs/data-structures/binary-tree/avl-tree.js +57 -50
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +154 -143
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +212 -199
- package/dist/mjs/data-structures/binary-tree/bst.d.ts +83 -71
- package/dist/mjs/data-structures/binary-tree/bst.js +115 -90
- package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +37 -35
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +64 -60
- package/dist/mjs/data-structures/binary-tree/tree-multimap.d.ts +46 -55
- package/dist/mjs/data-structures/binary-tree/tree-multimap.js +61 -95
- package/dist/mjs/data-structures/graph/abstract-graph.d.ts +1 -1
- package/dist/mjs/data-structures/graph/abstract-graph.js +4 -3
- package/dist/mjs/data-structures/hash/hash-map.d.ts +1 -1
- package/dist/mjs/data-structures/hash/hash-map.js +2 -2
- package/dist/mjs/data-structures/heap/heap.js +2 -3
- package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +2 -2
- package/dist/mjs/data-structures/linked-list/singly-linked-list.js +1 -1
- package/dist/mjs/data-structures/matrix/index.d.ts +0 -2
- package/dist/mjs/data-structures/matrix/index.js +0 -2
- package/dist/mjs/data-structures/matrix/matrix.d.ts +128 -10
- package/dist/mjs/data-structures/matrix/matrix.js +399 -16
- package/dist/mjs/data-structures/queue/deque.d.ts +2 -2
- package/dist/mjs/data-structures/queue/deque.js +7 -9
- package/dist/mjs/data-structures/queue/queue.d.ts +1 -1
- package/dist/mjs/data-structures/queue/queue.js +1 -1
- 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/base/base.d.ts +1 -1
- package/dist/mjs/types/data-structures/heap/heap.d.ts +1 -1
- package/dist/mjs/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
- package/dist/mjs/utils/utils.d.ts +1 -0
- package/dist/mjs/utils/utils.js +4 -0
- package/dist/umd/data-structure-typed.js +853 -943
- package/dist/umd/data-structure-typed.min.js +2 -2
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +4 -3
- package/src/data-structures/base/index.ts +1 -1
- package/src/data-structures/base/iterable-base.ts +7 -10
- package/src/data-structures/binary-tree/avl-tree.ts +73 -61
- package/src/data-structures/binary-tree/binary-tree.ts +301 -270
- package/src/data-structures/binary-tree/bst.ts +139 -115
- package/src/data-structures/binary-tree/rb-tree.ts +81 -73
- package/src/data-structures/binary-tree/tree-multimap.ts +72 -103
- package/src/data-structures/graph/abstract-graph.ts +13 -11
- package/src/data-structures/graph/directed-graph.ts +1 -3
- package/src/data-structures/graph/map-graph.ts +6 -1
- package/src/data-structures/graph/undirected-graph.ts +3 -6
- package/src/data-structures/hash/hash-map.ts +18 -16
- package/src/data-structures/heap/heap.ts +7 -10
- package/src/data-structures/heap/max-heap.ts +2 -1
- package/src/data-structures/heap/min-heap.ts +2 -1
- package/src/data-structures/linked-list/singly-linked-list.ts +2 -3
- package/src/data-structures/matrix/index.ts +0 -2
- package/src/data-structures/matrix/matrix.ts +442 -13
- package/src/data-structures/priority-queue/min-priority-queue.ts +11 -10
- package/src/data-structures/queue/deque.ts +18 -39
- package/src/data-structures/queue/queue.ts +1 -1
- package/src/interfaces/binary-tree.ts +9 -4
- package/src/types/common.ts +5 -5
- package/src/types/data-structures/base/base.ts +14 -3
- package/src/types/data-structures/base/index.ts +1 -1
- package/src/types/data-structures/graph/abstract-graph.ts +4 -2
- package/src/types/data-structures/hash/hash-map.ts +3 -3
- package/src/types/data-structures/heap/heap.ts +2 -2
- package/src/types/data-structures/priority-queue/priority-queue.ts +2 -2
- package/src/utils/utils.ts +7 -1
- package/test/integration/avl-tree.test.ts +18 -1
- package/test/integration/bst.test.ts +2 -2
- 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 +6 -16
- package/test/performance/data-structures/comparison/comparison.test.ts +19 -47
- package/test/performance/data-structures/graph/directed-graph.test.ts +3 -14
- package/test/performance/data-structures/hash/hash-map.test.ts +14 -38
- package/test/performance/data-structures/heap/heap.test.ts +5 -18
- package/test/performance/data-structures/linked-list/doubly-linked-list.test.ts +0 -2
- 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/deque.test.ts +6 -7
- package/test/performance/data-structures/queue/queue.test.ts +13 -29
- package/test/performance/data-structures/stack/stack.test.ts +6 -18
- package/test/performance/data-structures/trie/trie.test.ts +2 -6
- package/test/performance/reportor.ts +14 -15
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +14 -3
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +65 -29
- package/test/unit/data-structures/binary-tree/bst.test.ts +69 -27
- package/test/unit/data-structures/binary-tree/overall.test.ts +16 -18
- package/test/unit/data-structures/binary-tree/rb-tree.test.ts +17 -6
- package/test/unit/data-structures/binary-tree/tree-multimap.test.ts +37 -21
- package/test/unit/data-structures/graph/directed-graph.test.ts +104 -45
- package/test/unit/data-structures/graph/undirected-graph.test.ts +57 -40
- package/test/unit/data-structures/hash/hash-map.test.ts +48 -28
- package/test/unit/data-structures/hash/hash-table.test.ts +0 -4
- package/test/unit/data-structures/heap/heap.test.ts +0 -1
- package/test/unit/data-structures/heap/min-heap.test.ts +6 -5
- package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +10 -11
- package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +3 -4
- package/test/unit/data-structures/matrix/matrix.test.ts +345 -52
- package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +1 -1
- package/test/unit/data-structures/priority-queue/priority-queue.test.ts +0 -1
- package/test/unit/data-structures/queue/deque.test.ts +0 -6
- package/test/unit/data-structures/queue/queue.test.ts +1 -1
- package/test/unit/data-structures/stack/stack.test.ts +3 -4
- package/test/unit/unrestricted-interconversion.test.ts +50 -44
- package/test/utils/performanc.ts +1 -1
- package/typedoc.json +30 -0
- package/dist/cjs/data-structures/matrix/matrix2d.d.ts +0 -107
- package/dist/cjs/data-structures/matrix/matrix2d.js +0 -200
- package/dist/cjs/data-structures/matrix/matrix2d.js.map +0 -1
- package/dist/cjs/data-structures/matrix/vector2d.d.ts +0 -200
- package/dist/cjs/data-structures/matrix/vector2d.js +0 -291
- package/dist/cjs/data-structures/matrix/vector2d.js.map +0 -1
- package/dist/mjs/data-structures/matrix/matrix2d.d.ts +0 -107
- package/dist/mjs/data-structures/matrix/matrix2d.js +0 -196
- package/dist/mjs/data-structures/matrix/vector2d.d.ts +0 -200
- package/dist/mjs/data-structures/matrix/vector2d.js +0 -289
- package/src/data-structures/matrix/matrix2d.ts +0 -211
- package/src/data-structures/matrix/vector2d.ts +0 -315
- 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/matrix/matrix2d.test.ts +0 -345
- package/test/unit/data-structures/matrix/vector2d.test.ts +0 -171
package/src/types/common.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export enum BSTVariant {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
STANDARD = 'STANDARD',
|
|
3
|
+
INVERSE = 'INVERSE'
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
export enum CP {
|
|
@@ -46,15 +46,15 @@ export interface IterableWithLength<T> extends Iterable<T> {
|
|
|
46
46
|
length: number | ((...args: any[]) => number);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
export type IterableWithSizeOrLength<T> = IterableWithSize<T> | IterableWithLength<T
|
|
49
|
+
export type IterableWithSizeOrLength<T> = IterableWithSize<T> | IterableWithLength<T>;
|
|
50
50
|
|
|
51
|
-
export type BinaryTreePrintOptions = { isShowUndefined?: boolean
|
|
51
|
+
export type BinaryTreePrintOptions = { isShowUndefined?: boolean; isShowNull?: boolean; isShowRedBlackNIL?: boolean };
|
|
52
52
|
|
|
53
53
|
export type BTNEntry<K, V> = [K | null | undefined, V | undefined];
|
|
54
54
|
|
|
55
55
|
export type BTNKeyOrNode<K, N> = K | null | undefined | N;
|
|
56
56
|
|
|
57
|
-
export type
|
|
57
|
+
export type KeyOrNodeOrEntry<K, V, N> = BTNEntry<K, V> | BTNKeyOrNode<K, N>;
|
|
58
58
|
|
|
59
59
|
export type BTNodePureKeyOrNode<K, N> = K | N;
|
|
60
60
|
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
import { IterableElementBase, IterableEntryBase } from
|
|
1
|
+
import { IterableElementBase, IterableEntryBase } from '../../../data-structures';
|
|
2
2
|
|
|
3
3
|
export type EntryCallback<K, V, R> = (value: V, key: K, index: number, container: IterableEntryBase<K, V>) => R;
|
|
4
4
|
export type ElementCallback<V, R> = (element: V, index: number, container: IterableElementBase<V>) => R;
|
|
5
|
-
export type ReduceEntryCallback<K, V, R> = (
|
|
6
|
-
|
|
5
|
+
export type ReduceEntryCallback<K, V, R> = (
|
|
6
|
+
accumulator: R,
|
|
7
|
+
value: V,
|
|
8
|
+
key: K,
|
|
9
|
+
index: number,
|
|
10
|
+
container: IterableEntryBase<K, V>
|
|
11
|
+
) => R;
|
|
12
|
+
export type ReduceElementCallback<V, R> = (
|
|
13
|
+
accumulator: R,
|
|
14
|
+
element: V,
|
|
15
|
+
index: number,
|
|
16
|
+
container: IterableElementBase<V>
|
|
17
|
+
) => R;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './base';
|
|
1
|
+
export * from './base';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type VertexKey = string | number;
|
|
2
2
|
|
|
3
|
-
export type DijkstraResult<V> =
|
|
3
|
+
export type DijkstraResult<V> =
|
|
4
|
+
| {
|
|
4
5
|
distMap: Map<V, number>;
|
|
5
6
|
distPaths?: Map<V, V[]>;
|
|
6
7
|
preMap: Map<V, V | undefined>;
|
|
@@ -8,4 +9,5 @@ export type DijkstraResult<V> = {
|
|
|
8
9
|
paths: V[][];
|
|
9
10
|
minDist: number;
|
|
10
11
|
minPath: V[];
|
|
11
|
-
}
|
|
12
|
+
}
|
|
13
|
+
| undefined;
|
|
@@ -7,7 +7,7 @@ export type HashMapLinkedNode<K, V> = {
|
|
|
7
7
|
|
|
8
8
|
export type HashMapOptions<K> = {
|
|
9
9
|
hashFn: (key: K) => string;
|
|
10
|
-
objHashFn: (key: K) => object
|
|
11
|
-
}
|
|
10
|
+
objHashFn: (key: K) => object;
|
|
11
|
+
};
|
|
12
12
|
|
|
13
|
-
export type HashMapStoreItem<K, V> = { key: K
|
|
13
|
+
export type HashMapStoreItem<K, V> = { key: K; value: V };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { Comparator } from
|
|
1
|
+
import { Comparator } from '../../common';
|
|
2
2
|
|
|
3
|
-
export type HeapOptions<T> = { comparator: Comparator<T> }
|
|
3
|
+
export type HeapOptions<T> = { comparator: Comparator<T> };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { HeapOptions } from
|
|
1
|
+
import { HeapOptions } from '../heap';
|
|
2
2
|
|
|
3
|
-
export type PriorityQueueOptions<T> = HeapOptions<T> & {}
|
|
3
|
+
export type PriorityQueueOptions<T> = HeapOptions<T> & {};
|
package/src/utils/utils.ts
CHANGED
|
@@ -98,4 +98,10 @@ export const isWeakKey = (input: unknown): input is object => {
|
|
|
98
98
|
return (inputType === 'object' && input !== null) || inputType === 'function';
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
export const calcMinUnitsRequired = (totalQuantity: number, unitSize: number) =>
|
|
101
|
+
export const calcMinUnitsRequired = (totalQuantity: number, unitSize: number) =>
|
|
102
|
+
Math.floor((totalQuantity + unitSize - 1) / unitSize);
|
|
103
|
+
|
|
104
|
+
export const roundFixed = (num: number, digit: number = 10) => {
|
|
105
|
+
const multiplier = Math.pow(10, digit);
|
|
106
|
+
return Math.round(num * multiplier) / multiplier;
|
|
107
|
+
};
|
|
@@ -2,7 +2,24 @@ import { AVLTree, CP } from 'avl-tree-typed';
|
|
|
2
2
|
|
|
3
3
|
describe('AVL Tree Test', () => {
|
|
4
4
|
it('should perform various operations on a AVL Tree', () => {
|
|
5
|
-
const arr: [number, number][] = [
|
|
5
|
+
const arr: [number, number][] = [
|
|
6
|
+
[11, 11],
|
|
7
|
+
[3, 3],
|
|
8
|
+
[15, 15],
|
|
9
|
+
[1, 1],
|
|
10
|
+
[8, 8],
|
|
11
|
+
[13, 13],
|
|
12
|
+
[16, 16],
|
|
13
|
+
[2, 2],
|
|
14
|
+
[6, 6],
|
|
15
|
+
[9, 9],
|
|
16
|
+
[12, 12],
|
|
17
|
+
[14, 14],
|
|
18
|
+
[4, 4],
|
|
19
|
+
[7, 7],
|
|
20
|
+
[10, 10],
|
|
21
|
+
[5, 5]
|
|
22
|
+
];
|
|
6
23
|
const tree = new AVLTree();
|
|
7
24
|
|
|
8
25
|
for (const i of arr) tree.add(i);
|
|
@@ -7,7 +7,7 @@ describe('Individual package BST operations test', () => {
|
|
|
7
7
|
bst.add([11, 11]);
|
|
8
8
|
bst.add([3, 3]);
|
|
9
9
|
const idsOrValues = [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
|
|
10
|
-
bst.addMany(idsOrValues,
|
|
10
|
+
bst.addMany(idsOrValues, undefined);
|
|
11
11
|
expect(bst.root).toBeInstanceOf(BSTNode);
|
|
12
12
|
|
|
13
13
|
if (bst.root) expect(bst.root.key).toBe(11);
|
|
@@ -204,7 +204,7 @@ describe('Individual package BST operations test', () => {
|
|
|
204
204
|
[5, { key: 5, keyA: 5 }]
|
|
205
205
|
];
|
|
206
206
|
|
|
207
|
-
objBST.addMany(values,
|
|
207
|
+
objBST.addMany(values, undefined);
|
|
208
208
|
|
|
209
209
|
expect(objBST.root).toBeInstanceOf(BSTNode);
|
|
210
210
|
|
|
@@ -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,40 +12,30 @@ 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`, () => {
|
|
45
35
|
rbTree.clear();
|
|
46
36
|
for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
|
|
47
37
|
const entries = [...rbTree];
|
|
48
|
-
return entries.length === HUNDRED_THOUSAND
|
|
38
|
+
return entries.length === HUNDRED_THOUSAND;
|
|
49
39
|
});
|
|
50
40
|
|
|
51
41
|
export { suite };
|
|
@@ -22,25 +22,20 @@ const arrHundredThousand = getRandomIntArray(HUNDRED_THOUSAND, 0, HUNDRED_THOUSA
|
|
|
22
22
|
|
|
23
23
|
suite
|
|
24
24
|
.add(`SRC PQ ${TEN_THOUSAND.toLocaleString()} add`, () => {
|
|
25
|
-
|
|
26
25
|
const pq = new SRCPriorityQueue<number>();
|
|
27
26
|
for (let i = 0; i < TEN_THOUSAND; i++) pq.add(i);
|
|
28
27
|
})
|
|
29
28
|
.add(`CJS PQ ${TEN_THOUSAND.toLocaleString()} add`, () => {
|
|
30
|
-
|
|
31
|
-
|
|
32
29
|
const pq = new CJSPriorityQueue<number>();
|
|
33
30
|
for (let i = 0; i < TEN_THOUSAND; i++) pq.add(i);
|
|
34
31
|
})
|
|
35
32
|
.add(`MJS PQ ${TEN_THOUSAND.toLocaleString()} add`, () => {
|
|
36
|
-
|
|
37
33
|
const pq = new MJSPriorityQueue<number>([], { comparator: (a, b) => b - a });
|
|
38
34
|
for (let i = 0; i < TEN_THOUSAND; i++) pq.add(i);
|
|
39
35
|
});
|
|
40
36
|
|
|
41
37
|
if (isCompetitor) {
|
|
42
38
|
suite.add(`CPT PQ ${TEN_THOUSAND.toLocaleString()} add`, () => {
|
|
43
|
-
|
|
44
39
|
const pq = new CPriorityQueue<number>();
|
|
45
40
|
for (let i = 0; i < TEN_THOUSAND; i++) pq.push(i);
|
|
46
41
|
});
|
|
@@ -66,84 +61,61 @@ suite
|
|
|
66
61
|
for (let i = 0; i < TEN_THOUSAND; i++) pq.poll();
|
|
67
62
|
});
|
|
68
63
|
|
|
69
|
-
|
|
70
64
|
if (isCompetitor) {
|
|
71
|
-
suite
|
|
72
|
-
|
|
65
|
+
suite
|
|
66
|
+
.add(`CPT PQ ${TEN_THOUSAND.toLocaleString()} add & pop`, () => {
|
|
67
|
+
const pq = new CPriorityQueue<number>();
|
|
73
68
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
69
|
+
for (let i = 0; i < TEN_THOUSAND; i++) pq.push(i);
|
|
70
|
+
for (let i = 0; i < TEN_THOUSAND; i++) pq.pop();
|
|
71
|
+
})
|
|
77
72
|
.add(`CPT OM ${HUNDRED_THOUSAND.toLocaleString()} add`, () => {
|
|
78
|
-
for (let i = 0; i < arrHundredThousand.length; i++)
|
|
73
|
+
for (let i = 0; i < arrHundredThousand.length; i++)
|
|
79
74
|
cOrderedMap.setElement(arrHundredThousand[i], arrHundredThousand[i]);
|
|
80
|
-
}
|
|
81
75
|
})
|
|
82
76
|
.add(`CPT HM ${TEN_THOUSAND.toLocaleString()} set`, () => {
|
|
83
77
|
const hm = new CHashMap<number, number>();
|
|
84
78
|
|
|
85
|
-
for (let i = 0; i < TEN_THOUSAND; i++)
|
|
86
|
-
hm.setElement(i, i);
|
|
87
|
-
}
|
|
79
|
+
for (let i = 0; i < TEN_THOUSAND; i++) hm.setElement(i, i);
|
|
88
80
|
})
|
|
89
81
|
.add(`CPT HM ${TEN_THOUSAND.toLocaleString()} set & get`, () => {
|
|
90
82
|
const hm = new CHashMap<number, number>();
|
|
91
83
|
|
|
92
|
-
for (let i = 0; i < TEN_THOUSAND; i++)
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
for (let i = 0; i < TEN_THOUSAND; i++) {
|
|
96
|
-
hm.getElementByKey(i);
|
|
97
|
-
}
|
|
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);
|
|
98
86
|
})
|
|
99
87
|
.add(`CPT LL ${MILLION.toLocaleString()} unshift`, () => {
|
|
100
88
|
const list = new CLinkedList<number>();
|
|
101
89
|
|
|
102
|
-
for (let i = 0; i < MILLION; i++)
|
|
103
|
-
list.pushFront(i);
|
|
104
|
-
}
|
|
90
|
+
for (let i = 0; i < MILLION; i++) list.pushFront(i);
|
|
105
91
|
})
|
|
106
92
|
.add(`CPT PQ ${TEN_THOUSAND.toLocaleString()} add & pop`, () => {
|
|
107
93
|
const pq = new CPriorityQueue<number>();
|
|
108
94
|
|
|
109
|
-
for (let i = 0; i < TEN_THOUSAND; i++)
|
|
110
|
-
pq.push(i);
|
|
111
|
-
}
|
|
95
|
+
for (let i = 0; i < TEN_THOUSAND; i++) pq.push(i);
|
|
112
96
|
|
|
113
|
-
for (let i = 0; i < TEN_THOUSAND; i++)
|
|
114
|
-
pq.pop();
|
|
115
|
-
}
|
|
97
|
+
for (let i = 0; i < TEN_THOUSAND; i++) pq.pop();
|
|
116
98
|
})
|
|
117
99
|
.add(`CPT DQ ${MILLION.toLocaleString()} push`, () => {
|
|
118
100
|
const deque = new CDeque<number>();
|
|
119
|
-
for (let i = 0; i < MILLION; i++)
|
|
120
|
-
deque.pushBack(i);
|
|
121
|
-
}
|
|
101
|
+
for (let i = 0; i < MILLION; i++) deque.pushBack(i);
|
|
122
102
|
})
|
|
123
103
|
.add(`CPT Q ${MILLION.toLocaleString()} push`, () => {
|
|
124
104
|
const queue = new CQueue<number>();
|
|
125
105
|
|
|
126
|
-
for (let i = 0; i < MILLION; i++)
|
|
127
|
-
queue.push(i);
|
|
128
|
-
}
|
|
106
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
129
107
|
})
|
|
130
108
|
.add(`CPT ST ${MILLION.toLocaleString()} push`, () => {
|
|
131
109
|
const queue = new CStack<number>();
|
|
132
110
|
|
|
133
|
-
for (let i = 0; i < MILLION; i++)
|
|
134
|
-
queue.push(i);
|
|
135
|
-
}
|
|
111
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
136
112
|
})
|
|
137
113
|
.add(`CPT ST ${MILLION.toLocaleString()} push & pop`, () => {
|
|
138
114
|
const queue = new CStack<number>();
|
|
139
115
|
|
|
140
|
-
for (let i = 0; i < MILLION; i++)
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
for (let i = 0; i < MILLION; i++) {
|
|
144
|
-
queue.pop();
|
|
145
|
-
}
|
|
116
|
+
for (let i = 0; i < MILLION; i++) queue.push(i);
|
|
117
|
+
for (let i = 0; i < MILLION; i++) queue.pop();
|
|
146
118
|
});
|
|
147
119
|
}
|
|
148
120
|
|
|
149
|
-
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,45 +36,31 @@ 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
|
-
|
|
82
64
|
});
|
|
83
65
|
|
|
84
66
|
suite.add(`${MILLION.toLocaleString()} ObjKey set & get`, () => {
|
|
@@ -86,12 +68,10 @@ suite.add(`${MILLION.toLocaleString()} ObjKey set & get`, () => {
|
|
|
86
68
|
const objKeys: [number, number][] = [];
|
|
87
69
|
for (let i = 0; i < MILLION; i++) {
|
|
88
70
|
const obj: [number, number] = [i, i];
|
|
89
|
-
objKeys.push(obj)
|
|
71
|
+
objKeys.push(obj);
|
|
90
72
|
hm.set(obj, i);
|
|
91
73
|
}
|
|
92
|
-
for (let i = 0; i < MILLION; i++)
|
|
93
|
-
hm.get(objKeys[i]);
|
|
94
|
-
}
|
|
74
|
+
for (let i = 0; i < MILLION; i++) hm.get(objKeys[i]);
|
|
95
75
|
});
|
|
96
76
|
|
|
97
77
|
suite.add(`Native Map ${MILLION.toLocaleString()} ObjKey set & get`, () => {
|
|
@@ -99,12 +79,10 @@ suite.add(`Native Map ${MILLION.toLocaleString()} ObjKey set & get`, () => {
|
|
|
99
79
|
const objs: [number, number][] = [];
|
|
100
80
|
for (let i = 0; i < MILLION; i++) {
|
|
101
81
|
const obj: [number, number] = [i, i];
|
|
102
|
-
objs.push(obj)
|
|
82
|
+
objs.push(obj);
|
|
103
83
|
hm.set(obj, i);
|
|
104
84
|
}
|
|
105
|
-
for (let i = 0; i < MILLION; i++)
|
|
106
|
-
hm.get(objs[i]);
|
|
107
|
-
}
|
|
85
|
+
for (let i = 0; i < MILLION; i++) hm.get(objs[i]);
|
|
108
86
|
});
|
|
109
87
|
|
|
110
88
|
suite.add(`Native Set ${MILLION.toLocaleString()} ObjKey add & has`, () => {
|
|
@@ -112,12 +90,10 @@ suite.add(`Native Set ${MILLION.toLocaleString()} ObjKey add & has`, () => {
|
|
|
112
90
|
const objs: [number, number][] = [];
|
|
113
91
|
for (let i = 0; i < MILLION; i++) {
|
|
114
92
|
const obj: [number, number] = [i, i];
|
|
115
|
-
objs.push(obj)
|
|
93
|
+
objs.push(obj);
|
|
116
94
|
hs.add(obj);
|
|
117
95
|
}
|
|
118
|
-
for (let i = 0; i < MILLION; i++)
|
|
119
|
-
hs.has(objs[i]);
|
|
120
|
-
}
|
|
96
|
+
for (let i = 0; i < MILLION; i++) hs.has(objs[i]);
|
|
121
97
|
});
|
|
122
98
|
|
|
123
99
|
export { suite };
|