Created
April 17, 2025 11:07
-
-
Save guillaumefalvet/3e3d0f5878d608b549f5ce7be818b339 to your computer and use it in GitHub Desktop.
benchmark
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { performance } from 'perf_hooks'; | |
| const ITERATIONS = 10_000_000; | |
| const TEST_KEY = '5000000'; // Middle key for lookup/delete operations | |
| // Benchmark Record | |
| const record: Record<string, number> = {}; | |
| let start = performance.now(); | |
| for (let i = 0; i < ITERATIONS; i++) { | |
| record[i.toString()] = i; | |
| } | |
| console.log(`Record insertion: ${(performance.now() - start).toFixed(2)} ms`); | |
| start = performance.now(); | |
| const recordLookup = record[TEST_KEY]; | |
| console.log(`Record lookup: ${(performance.now() - start).toFixed(2)} ms (Value: ${recordLookup})`); | |
| start = performance.now(); | |
| delete record[TEST_KEY]; | |
| console.log(`Record deletion: ${(performance.now() - start).toFixed(2)} ms`); | |
| // Benchmark Map | |
| const map = new Map<string, number>(); | |
| start = performance.now(); | |
| for (let i = 0; i < ITERATIONS; i++) { | |
| map.set(i.toString(), i); | |
| } | |
| console.log(`Map insertion: ${(performance.now() - start).toFixed(2)} ms`); | |
| start = performance.now(); | |
| const mapLookup = map.get(TEST_KEY); | |
| console.log(`Map lookup: ${(performance.now() - start).toFixed(2)} ms (Value: ${mapLookup})`); | |
| start = performance.now(); | |
| map.delete(TEST_KEY); | |
| console.log(`Map deletion: ${(performance.now() - start).toFixed(2)} ms`); | |
| // Benchmark Array | |
| const array: [string, number][] = []; | |
| start = performance.now(); | |
| for (let i = 0; i < ITERATIONS; i++) { | |
| array.push([i.toString(), i]); | |
| } | |
| console.log(`Array insertion: ${(performance.now() - start).toFixed(2)} ms`); | |
| start = performance.now(); | |
| const arrayLookup = array.find(([key]) => key === TEST_KEY)?.[1]; | |
| console.log(`Array lookup: ${(performance.now() - start).toFixed(2)} ms (Value: ${arrayLookup})`); | |
| start = performance.now(); | |
| const index = array.findIndex(([key]) => key === TEST_KEY); | |
| if (index !== -1) array.splice(index, 1); | |
| console.log(`Array deletion: ${(performance.now() - start).toFixed(2)} ms`); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment