typescript-ds-lib 0.3.0 → 0.3.1
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/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
package/package.json
CHANGED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class BenchmarkBase {
|
|
4
|
-
measure(fn) {
|
|
5
|
-
const start = performance.now();
|
|
6
|
-
fn();
|
|
7
|
-
const end = performance.now();
|
|
8
|
-
return end - start;
|
|
9
|
-
}
|
|
10
|
-
formatResult(name, firstTime, secondTime, firstName = 'First', secondName = 'Second') {
|
|
11
|
-
const diff = Math.abs(firstTime - secondTime);
|
|
12
|
-
const ratio = Math.max(firstTime, secondTime) / Math.min(firstTime, secondTime);
|
|
13
|
-
const faster = secondTime > firstTime ? 'slower' : 'faster';
|
|
14
|
-
const percentage = ((ratio - 1) * 100).toFixed(2);
|
|
15
|
-
console.log(`\n${name} Times:`);
|
|
16
|
-
console.log(`${firstName}: ${firstTime.toFixed(2)}ms`);
|
|
17
|
-
console.log(`${secondName}: ${secondTime.toFixed(2)}ms`);
|
|
18
|
-
// console.log(`Difference: ${diff.toFixed(2)}ms`);
|
|
19
|
-
console.log(`${secondName} is ${ratio.toFixed(2)}x (${percentage}%) ${faster} than ${firstName}`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.default = BenchmarkBase;
|
|
23
|
-
//# sourceMappingURL=benchmark.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../benchmarks/benchmark.ts"],"names":[],"mappings":";;AAAA,MAA8B,aAAa;IAC/B,OAAO,CAAC,EAAc;QAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,EAAE,EAAE,CAAC;QACL,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,OAAO,GAAG,GAAG,KAAK,CAAC;IACrB,CAAC;IAES,YAAY,CAAC,IAAY,EAAE,SAAiB,EAAE,UAAkB,EAAE,YAAoB,OAAO,EAAE,aAAqB,QAAQ;QACpI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC5D,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAElD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzD,mDAAmD;QACnD,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,MAAM,MAAM,SAAS,SAAS,EAAE,CAAC,CAAC;IACpG,CAAC;CAGF;AAtBD,gCAsBC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import BenchmarkBase from './benchmark';
|
|
2
|
-
export default class HashTableBenchmark extends BenchmarkBase {
|
|
3
|
-
protected iterations: number;
|
|
4
|
-
constructor(iterations?: number);
|
|
5
|
-
protected generateTestData(): [string, string][];
|
|
6
|
-
run(): void;
|
|
7
|
-
benchmarkCustomHashCode(): void;
|
|
8
|
-
}
|
|
@@ -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"}
|