From 21349c161eacce8f764c9dc515400a74f478cb08 Mon Sep 17 00:00:00 2001 From: Dmitry Astapov Date: Mon, 22 Jun 2020 19:12:00 +0100 Subject: [PATCH] lib: only memoize in csv reader when there are more than 15 cond. blocks --- hledger-lib/Hledger/Read/CsvReader.hs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hledger-lib/Hledger/Read/CsvReader.hs b/hledger-lib/Hledger/Read/CsvReader.hs index 2e8068813..f12f3ac8f 100644 --- a/hledger-lib/Hledger/Read/CsvReader.hs +++ b/hledger-lib/Hledger/Read/CsvReader.hs @@ -333,15 +333,17 @@ defrules = CsvRules' { -- | Create CsvRules from the content parsed out of the rules file mkrules :: CsvRulesParsed -> CsvRules mkrules rules = - let conditionalblocks = reverse $ rconditionalblocks rules in + let conditionalblocks = reverse $ rconditionalblocks rules + maybeMemo = if length conditionalblocks >= 15 then memo else id + in CsvRules' { rdirectives=reverse $ rdirectives rules, rcsvfieldindexes=rcsvfieldindexes rules, rassignments=reverse $ rassignments rules, rconditionalblocks=conditionalblocks, - rblocksassigning = memo (\f -> filter (any ((==f).fst) . cbAssignments) conditionalblocks) + rblocksassigning = maybeMemo (\f -> filter (any ((==f).fst) . cbAssignments) conditionalblocks) } - + --- *** rules parsers {-