gnucash stable: [balance-forecast] optimise some loops
Christopher Lam
clam at code.gnucash.org
Thu May 8 10:42:07 EDT 2025
Updated via https://github.com/Gnucash/gnucash/commit/811ebf55 (commit)
from https://github.com/Gnucash/gnucash/commit/8bd2d10c (commit)
commit 811ebf5505fc3e354053c78699351feea7a507f7
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Mon May 5 19:03:22 2025 +0800
[balance-forecast] optimise some loops
fewer temporary lists and gc
diff --git a/gnucash/report/reports/standard/balance-forecast.scm b/gnucash/report/reports/standard/balance-forecast.scm
index f883033204..52ffeb2047 100644
--- a/gnucash/report/reports/standard/balance-forecast.scm
+++ b/gnucash/report/reports/standard/balance-forecast.scm
@@ -181,7 +181,7 @@ date point, a projected minimum balance including scheduled transactions."))
(gnc:html-make-no-account-warning
report-title (gnc:report-id report-obj))))
- ((every zero? (map gnc:gnc-monetary-amount (apply append accounts-balancelist)))
+ ((every (lambda (lst) (every (compose zero? gnc:gnc-monetary-amount) lst)) accounts-balancelist)
(gnc:html-document-add-object!
document
(gnc:html-make-empty-data-warning
@@ -191,10 +191,13 @@ date point, a projected minimum balance including scheduled transactions."))
;; initialize the SX balance accumulator with the instantiated SX
;; amounts starting from the earliest split date in the list of
;; accounts up to the report start date.
- (let* ((accounts-dates (map (compose xaccTransGetDate xaccSplitGetParent car)
- (filter pair?
- (map xaccAccountGetSplits accounts))))
- (earliest (and (pair? accounts-dates) (apply min accounts-dates)))
+ (let* ((earliest
+ (fold
+ (lambda (a b)
+ (if (zero? (xaccAccountGetSplitsSize a)) b
+ (let ((date (xaccTransGetDate (xaccSplitGetParent (car (xaccAccountGetSplits a))))))
+ (if b (min date b) date))))
+ #f accounts))
(sx-hash (if earliest
(gnc-sx-all-instantiate-cashflow-all earliest from-date)
(make-hash-table))))
Summary of changes:
gnucash/report/reports/standard/balance-forecast.scm | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
More information about the gnucash-changes
mailing list