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