mirror of
https://github.com/simonmichael/hledger.git
synced 2025-01-07 19:28:26 +03:00
00f22819ae
This refactoring fixes an O(n^2) slowdown in the balance command with large numbers of accounts. It's now speedy, and the implementation is clearer. To facilitate this, the Account type now represents a tree of accounts which can easily be traversed up or down (and/or flattened into a list). Benchmark on a 2010 macbook: +-------------------------------------------++--------------+------------+--------+ | || before: | after: | | | || hledger-0.18 | hledgeropt | ledger | +===========================================++==============+============+========+ | -f data/100x100x10.journal balance || 0.21 | 0.07 | 0.09 | | -f data/1000x1000x10.journal balance || 10.13 | 0.47 | 0.62 | | -f data/1000x10000x10.journal balance || 40.67 | 0.67 | 1.01 | | -f data/10000x1000x10.journal balance || 15.01 | 3.22 | 2.36 | | -f data/10000x1000x10.journal balance aa || 4.77 | 4.40 | 2.33 | +-------------------------------------------++--------------+------------+--------+ |
||
---|---|---|
.. | ||
Data | ||
Read | ||
Utils | ||
Data.hs | ||
Query.hs | ||
Read.hs | ||
Reports.hs | ||
Utils.hs |