typescript-ds-lib 0.3.0 → 0.3.5
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/README.md +9 -7
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/base-collection.d.ts +14 -0
- package/dist/lib/base-collection.js +7 -0
- package/dist/lib/base-collection.js.map +1 -0
- package/dist/lib/binary-search-tree.d.ts +14 -3
- package/dist/lib/binary-search-tree.js +11 -2
- package/dist/lib/binary-search-tree.js.map +1 -1
- package/dist/lib/deque.d.ts +14 -4
- package/dist/lib/deque.js +3 -1
- package/dist/lib/deque.js.map +1 -1
- package/dist/lib/hash-table-utils.js.map +1 -1
- package/dist/lib/hash-table.d.ts +6 -4
- package/dist/lib/hash-table.js +13 -2
- package/dist/lib/hash-table.js.map +1 -1
- package/dist/lib/heap.d.ts +32 -0
- package/dist/lib/heap.js +101 -0
- package/dist/lib/heap.js.map +1 -0
- package/dist/lib/linked-list.d.ts +14 -4
- package/dist/lib/linked-list.js +5 -3
- package/dist/lib/linked-list.js.map +1 -1
- package/dist/lib/map.d.ts +5 -4
- package/dist/lib/map.js +3 -1
- package/dist/lib/map.js.map +1 -1
- package/dist/lib/matrix.d.ts +14 -4
- package/dist/lib/matrix.js +3 -1
- package/dist/lib/matrix.js.map +1 -1
- package/dist/lib/priority-queue.d.ts +15 -4
- package/dist/lib/priority-queue.js +14 -20
- package/dist/lib/priority-queue.js.map +1 -1
- package/dist/lib/queue.d.ts +14 -4
- package/dist/lib/queue.js +3 -1
- package/dist/lib/queue.js.map +1 -1
- package/dist/lib/red-black-tree.d.ts +5 -4
- package/dist/lib/red-black-tree.js +5 -3
- package/dist/lib/red-black-tree.js.map +1 -1
- package/dist/lib/set.d.ts +14 -4
- package/dist/lib/set.js +3 -1
- package/dist/lib/set.js.map +1 -1
- package/dist/lib/stack.d.ts +14 -4
- package/dist/lib/stack.js +12 -9
- package/dist/lib/stack.js.map +1 -1
- package/package.json +1 -1
- package/dist/benchmarks/benchmark.d.ts +0 -5
- package/dist/benchmarks/benchmark.js +0 -23
- package/dist/benchmarks/benchmark.js.map +0 -1
- package/dist/benchmarks/hash-table.d.ts +0 -8
- package/dist/benchmarks/hash-table.js +0 -121
- package/dist/benchmarks/hash-table.js.map +0 -1
- package/dist/benchmarks/run.d.ts +0 -1
- package/dist/benchmarks/run.js +0 -12
- package/dist/benchmarks/run.js.map +0 -1
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const benchmark_1 = __importDefault(require("./benchmark"));
|
|
7
|
-
const hash_table_1 = require("../lib/hash-table");
|
|
8
|
-
class HashTableBenchmark extends benchmark_1.default {
|
|
9
|
-
iterations;
|
|
10
|
-
constructor(iterations = 100000) {
|
|
11
|
-
super();
|
|
12
|
-
this.iterations = iterations;
|
|
13
|
-
}
|
|
14
|
-
generateTestData() {
|
|
15
|
-
return Array.from({ length: this.iterations }, (_, i) => [`key${i}`, `value${i}`]);
|
|
16
|
-
}
|
|
17
|
-
run() {
|
|
18
|
-
const testData = this.generateTestData();
|
|
19
|
-
// Test insertion
|
|
20
|
-
const map = new Map();
|
|
21
|
-
const hashTable = new hash_table_1.HashTable(8192 * 100);
|
|
22
|
-
const mapInsertTime = this.measure(() => {
|
|
23
|
-
for (const [key, value] of testData) {
|
|
24
|
-
map.set(key, value);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
const hashTableInsertTime = this.measure(() => {
|
|
28
|
-
for (const [key, value] of testData) {
|
|
29
|
-
hashTable.insert(key, value);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
// Test lookup
|
|
33
|
-
const mapLookupTime = this.measure(() => {
|
|
34
|
-
for (const [key] of testData) {
|
|
35
|
-
map.get(key);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
const hashTableLookupTime = this.measure(() => {
|
|
39
|
-
for (const [key] of testData) {
|
|
40
|
-
hashTable.get(key);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
// Test deletion
|
|
44
|
-
const mapDeleteTime = this.measure(() => {
|
|
45
|
-
for (const [key] of testData) {
|
|
46
|
-
map.delete(key);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
const hashTableDeleteTime = this.measure(() => {
|
|
50
|
-
for (const [key] of testData) {
|
|
51
|
-
hashTable.remove(key);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
// Print results
|
|
55
|
-
console.log(`\nBenchmark Results (${this.iterations.toLocaleString()} operations):`);
|
|
56
|
-
this.formatResult('Insertion', mapInsertTime, hashTableInsertTime, 'Map', 'HashTable');
|
|
57
|
-
// this.formatResult('Lookup', mapLookupTime, hashTableLookupTime, 'Map', 'HashTable');
|
|
58
|
-
// this.formatResult('Deletion', mapDeleteTime, hashTableDeleteTime, 'Map', 'HashTable');
|
|
59
|
-
}
|
|
60
|
-
benchmarkCustomHashCode() {
|
|
61
|
-
// Create test data with custom hash code implementation
|
|
62
|
-
class CustomKey {
|
|
63
|
-
value;
|
|
64
|
-
constructor(value) {
|
|
65
|
-
this.value = value;
|
|
66
|
-
}
|
|
67
|
-
hashCode() {
|
|
68
|
-
return this.value % 8192;
|
|
69
|
-
}
|
|
70
|
-
equals(other) {
|
|
71
|
-
return this.value === other.value;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
const testData = [];
|
|
75
|
-
for (let i = 0; i < this.iterations; i++) {
|
|
76
|
-
testData.push([new CustomKey(i), i]);
|
|
77
|
-
}
|
|
78
|
-
// Test insertion
|
|
79
|
-
const map = new Map();
|
|
80
|
-
const hashTable = new hash_table_1.HashTable(8192 * 100);
|
|
81
|
-
const mapInsertTime = this.measure(() => {
|
|
82
|
-
for (const [key, value] of testData) {
|
|
83
|
-
map.set(key, value);
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
const hashTableInsertTime = this.measure(() => {
|
|
87
|
-
for (const [key, value] of testData) {
|
|
88
|
-
hashTable.insert(key, value);
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
// Test lookup
|
|
92
|
-
const mapLookupTime = this.measure(() => {
|
|
93
|
-
for (const [key] of testData) {
|
|
94
|
-
map.get(key);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
const hashTableLookupTime = this.measure(() => {
|
|
98
|
-
for (const [key] of testData) {
|
|
99
|
-
hashTable.get(key);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
// Test deletion
|
|
103
|
-
const mapDeleteTime = this.measure(() => {
|
|
104
|
-
for (const [key] of testData) {
|
|
105
|
-
map.delete(key);
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
const hashTableDeleteTime = this.measure(() => {
|
|
109
|
-
for (const [key] of testData) {
|
|
110
|
-
hashTable.remove(key);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
// Print results
|
|
114
|
-
console.log(`\nBenchmark Results with Custom HashCode (${this.iterations.toLocaleString()} operations):`);
|
|
115
|
-
this.formatResult('Insertion', mapInsertTime, hashTableInsertTime, 'Map', 'HashTable');
|
|
116
|
-
this.formatResult('Lookup', mapLookupTime, hashTableLookupTime, 'Map', 'HashTable');
|
|
117
|
-
this.formatResult('Deletion', mapDeleteTime, hashTableDeleteTime, 'Map', 'HashTable');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
exports.default = HashTableBenchmark;
|
|
121
|
-
//# sourceMappingURL=hash-table.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hash-table.js","sourceRoot":"","sources":["../../benchmarks/hash-table.ts"],"names":[],"mappings":"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"}
|
package/dist/benchmarks/run.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/benchmarks/run.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const hash_table_1 = __importDefault(require("./hash-table"));
|
|
7
|
-
// Run benchmark
|
|
8
|
-
console.log('Starting benchmark...');
|
|
9
|
-
const benchmark = new hash_table_1.default(100000);
|
|
10
|
-
benchmark.run();
|
|
11
|
-
// benchmark.benchmarkCustomHashCode();
|
|
12
|
-
//# sourceMappingURL=run.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../benchmarks/run.ts"],"names":[],"mappings":";;;;;AAAA,8DAA8C;AAE9C,gBAAgB;AAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACrC,MAAM,SAAS,GAAG,IAAI,oBAAkB,CAAC,MAAM,CAAC,CAAC;AACjD,SAAS,CAAC,GAAG,EAAE,CAAC;AAChB,uCAAuC"}
|