⚡️ Speed up function fibonacci by 136%
#1159
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📄 136% (1.36x) speedup for
fibonacciincode_to_optimize_js_esm/fibonacci.js⏱️ Runtime :
46.5 microseconds→19.7 microseconds(best of1runs)📝 Explanation and details
The optimized code achieves a 135% speedup (46.5μs → 19.7μs) by replacing exponential-time naive recursion with linear-time iteration.
Key optimization:
fibonacci(n)requires computingfibonacci(n-1)andfibonacci(n-2), each of which spawns two more calls, leading to O(2^n) time complexity with massive redundant calculationsprev,curr) that advances through the sequence once, achieving O(n) time and O(1) space complexityWhy this is faster:
fibonacci(2)is computed thousands of times when calculatingfibonacci(30))Test results confirm the optimization:
Impact: This optimization is critical for any workload computing Fibonacci numbers beyond n=20. The iterative approach scales linearly while the recursive approach becomes unusable around n=40.
✅ Correctness verification report:
⚙️ Click to see Existing Unit Tests
fibonacci.test.js::fibonacci returns 0 for n=0fibonacci.test.js::fibonacci returns 1 for n=1fibonacci.test.js::fibonacci returns 1 for n=2fibonacci.test.js::fibonacci returns 233 for n=13fibonacci.test.js::fibonacci returns 5 for n=5fibonacci.test.js::fibonacci returns 55 for n=10🌀 Click to see Generated Regression Tests
To edit these changes
git checkout codeflash/optimize-fibonacci-mkr1e1xvand push.