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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typescript-ds-lib",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "A collection of TypeScript data structure implementations",
5
5
  "author": "Artiom Baloian <artiom.baloian@gmail.com>",
6
6
  "license": "MIT",
@@ -1,5 +0,0 @@
1
- export default abstract class BenchmarkBase {
2
- protected measure(fn: () => void): number;
3
- protected formatResult(name: string, firstTime: number, secondTime: number, firstName?: string, secondName?: string): void;
4
- abstract run(): void;
5
- }
@@ -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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"}
@@ -1 +0,0 @@
1
- export {};
@@ -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"}