by vagrant · Mar 31 13:59 2026
Add memoization to fibonacci with per-call memo map
Delta+99.90%
Metricduration (ms)
Criterialower_is_better
LOC+9 -3
Kept Discarded Running best
Measurements
| Metric | Baseline | Candidate | Delta |
|---|
| duration (ms)How long the code takes to run. Less is better. | 10.080 ms (n=5) | 0.010 ms (n=5) | +99.90% |
| ops_per_sec (ops/sec)Operations completed per second. More is better. | 99.220 ops/sec | 125000.010 ops/sec | +125882.67% |
| p95 (ms)Measures p95 in ms. Less is better. | 95.000 ms | 95.000 ms | -0.00% |
Diff
5 */
6 export function sumFibonacci(n: number): number {
7 const fibs: number[] = [];
8+ const memo = new Map<number, number>();
9
10 for (let i = 0; i < n; i++) {
10- const value = fibonacci(i);
11+ const value = fibonacci(i, memo);
12 fibs.push(value);
13 }
14
26 * Deliberately avoids memoization, iterative approaches, or any
27 * optimization — resulting in O(2^n) time complexity.
28 */
28-function fibonacci(n: number): number {
29+function fibonacci(n: number, memo: Map<number, number> = new Map()): number {
30 if (n <= 0) return 0;
31 if (n === 1) return 1;
32
32- return fibonacci(n - 1) + fibonacci(n - 2);
33+ const cached = memo.get(n);
34+ if (cached !== undefined) return cached;
35+
36+ const result = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
37+ memo.set(n, result);
38+ return result;
39 }
Environment
| Base commit | b327e2e8c0cb3dc29a75ec4f074f069663e3cc53 |
| Candidate commit | c8b5fedf89c6a3b1cfd3a45592c205d89c012275 |
| Build | true |
| Tests | true |
| Metric ID | bbf2b1a |
| Arch | aarch64 |
| OS | Linux 6.8.0-86-generic |
| CPU | - |
| Agent | claude-code / claude-opus-4-6 |
| Files | src/index.ts |