⚡ Optimize mortgage payoff performance using NPER formula#18
Merged
LimaniBhavik merged 1 commit intoMar 1, 2026
Merged
Conversation
Replaced the simulation-based iterative loop in the `mortgage_payoff` function with the closed-form NPER (number of periods) formula using logarithms. This change improves the calculation performance from O(N) to O(1) complexity, achieving an approximately 40x speedup in benchmark tests (measured 9.5ms vs 377ms for 100,000 iterations). The new implementation: - Corrects handling for 0% interest scenarios. - Preserves the existing early-exit behavior (returning 9999) for non-paying loans. - Maintains the 1200-month safety limit (returning 1201) for compatibility with the previous simulation logic. - Adds an example benchmark file for future performance monitoring. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Replaced the simulation-based iterative loop in the
mortgage_payofffunction with the closed-form NPER (number of periods) formula using logarithms.This change improves the calculation performance from O(N) to O(1) complexity, achieving an approximately 40x speedup in benchmark tests (measured 9.5ms vs 377ms for 100,000 iterations).
The new implementation: