From d55ce4d759c50f7ddd3bdc13f782357d53b4b160 Mon Sep 17 00:00:00 2001 From: Stephen Morgan Date: Sat, 18 Sep 2021 09:56:30 +1000 Subject: [PATCH] ref: performance: Use a Set in accountNamesFromPostings, instead of nubSort. This has better performance when there is repetition in the account names. --- hledger-lib/Hledger/Data/Posting.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hledger-lib/Hledger/Data/Posting.hs b/hledger-lib/Hledger/Data/Posting.hs index 363a2b927..84f4263e3 100644 --- a/hledger-lib/Hledger/Data/Posting.hs +++ b/hledger-lib/Hledger/Data/Posting.hs @@ -72,11 +72,11 @@ where import Control.Monad (foldM) import Data.Foldable (asum) -import Data.List.Extra (nubSort) import qualified Data.Map as M import Data.Maybe (fromMaybe, isJust) import Data.MemoUgly (memo) import Data.List (foldl') +import qualified Data.Set as S import Data.Text (Text) import qualified Data.Text as T import Data.Time.Calendar (Day) @@ -191,7 +191,7 @@ hasBalanceAssignment p = not (hasAmount p) && isJust (pbalanceassertion p) -- | Sorted unique account names referenced by these postings. accountNamesFromPostings :: [Posting] -> [AccountName] -accountNamesFromPostings = nubSort . map paccount +accountNamesFromPostings = S.toList . S.fromList . map paccount -- | Sum all amounts from a list of postings. sumPostings :: [Posting] -> MixedAmount