dev: reg: areg: Strip prices early on in PostingsReport and AccountTransactionsReport, when possible.
This results in big speedups in cases when we have many transaction prices, like in examples/10000x1000x10.journal. This can be disabled with the show_costs_ option in ReportOpts.
This commit is contained in:
parent
25e3cca2e1
commit
45408183fe
@ -116,7 +116,12 @@ accountTransactionsReport rspec@ReportSpec{_rsReportOpts=ropts} j thisacctq = it
|
|||||||
-- Additional reportq filtering, such as date filtering, happens down in
|
-- Additional reportq filtering, such as date filtering, happens down in
|
||||||
-- accountTransactionsReportItem, which discards transactions with no matched postings.
|
-- accountTransactionsReportItem, which discards transactions with no matched postings.
|
||||||
acctJournal =
|
acctJournal =
|
||||||
ptraceAtWith 5 (("ts3:\n"++).pshowTransactions.jtxns)
|
-- With most calls we will not require transaction prices past this point, and can get a big
|
||||||
|
-- speed improvement by stripping them early. In some cases, such as in hledger-ui, we still
|
||||||
|
-- want to keep prices around, so we can toggle between cost and no cost quickly. We can use
|
||||||
|
-- the show_costs_ flag to be efficient when we can, and detailed when we have to.
|
||||||
|
(if show_costs_ ropts then id else journalMapPostingAmounts mixedAmountStripPrices)
|
||||||
|
. ptraceAtWith 5 (("ts3:\n"++).pshowTransactions.jtxns)
|
||||||
-- maybe convert these transactions to cost or value
|
-- maybe convert these transactions to cost or value
|
||||||
. journalApplyValuationFromOpts rspec
|
. journalApplyValuationFromOpts rspec
|
||||||
. ptraceAtWith 5 (("ts2:\n"++).pshowTransactions.jtxns)
|
. ptraceAtWith 5 (("ts2:\n"++).pshowTransactions.jtxns)
|
||||||
|
|||||||
@ -120,6 +120,11 @@ matchedPostingsBeforeAndDuring rspec@ReportSpec{_rsReportOpts=ropts,_rsQuery=q}
|
|||||||
sortOn (postingDateOrDate2 (whichDate ropts)) -- sort postings by date or date2
|
sortOn (postingDateOrDate2 (whichDate ropts)) -- sort postings by date or date2
|
||||||
. (if invert_ ropts then map negatePostingAmount else id) -- with --invert, invert amounts
|
. (if invert_ ropts then map negatePostingAmount else id) -- with --invert, invert amounts
|
||||||
. journalPostings
|
. journalPostings
|
||||||
|
-- With most calls we will not require transaction prices past this point, and can get a big
|
||||||
|
-- speed improvement by stripping them early. In some cases, such as in hledger-ui, we still
|
||||||
|
-- want to keep prices around, so we can toggle between cost and no cost quickly. We can use
|
||||||
|
-- the show_costs_ flag to be efficient when we can, and detailed when we have to.
|
||||||
|
. (if show_costs_ ropts then id else journalMapPostingAmounts mixedAmountStripPrices)
|
||||||
$ journalValueAndFilterPostings rspec{_rsQuery=beforeandduringq} j
|
$ journalValueAndFilterPostings rspec{_rsQuery=beforeandduringq} j
|
||||||
|
|
||||||
-- filter postings by the query, with no start date or depth limit
|
-- filter postings by the query, with no start date or depth limit
|
||||||
|
|||||||
@ -69,6 +69,8 @@ rsInit d reset ui@UIState{aopts=_uopts@UIOpts{uoCliOpts=copts@CliOpts{reportspec
|
|||||||
ropts' = ropts {
|
ropts' = ropts {
|
||||||
-- ignore any depth limit, as in postingsReport; allows register's total to match accounts screen
|
-- ignore any depth limit, as in postingsReport; allows register's total to match accounts screen
|
||||||
depth_=Nothing
|
depth_=Nothing
|
||||||
|
-- do not strip prices so we can toggle costs within the ui
|
||||||
|
, show_costs_=True
|
||||||
-- XXX aregister also has this, needed ?
|
-- XXX aregister also has this, needed ?
|
||||||
-- always show historical balance
|
-- always show historical balance
|
||||||
-- , balanceaccum_= Historical
|
-- , balanceaccum_= Historical
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user