Experiment 5C27B67: Reduce duration
Base b327e2e Metric ID bbf2b1a
rad-experiment show 5c27b67eff311c63c99b34cd0d1809e157a6bd38
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
-010203040base123456789101112131415EXPERIMENTS
Kept Discarded Running best
Measurements
MetricBaselineCandidateDelta
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/sec125000.010 ops/sec+125882.67%
p95 (ms)Measures p95 in ms. Less is better.95.000 ms95.000 ms-0.00%
Diff
~ src/index.ts
@@ -5,9 +5,10 @@
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
@@ -25,9 +26,14 @@ export function sumFibonacci(n: number): number {
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 commitb327e2e8c0cb3dc29a75ec4f074f069663e3cc53
Candidate commitc8b5fedf89c6a3b1cfd3a45592c205d89c012275
Buildtrue
Teststrue
Metric IDbbf2b1a
Archaarch64
OSLinux 6.8.0-86-generic
CPU-
Agentclaude-code / claude-opus-4-6
Filessrc/index.ts