ref: performance: Use a Set in accountNamesFromPostings, instead of

nubSort.

This has better performance when there is repetition in the account
names.
This commit is contained in:
Stephen Morgan 2021-09-18 09:56:30 +10:00 committed by Simon Michael
parent ab5350e02c
commit d55ce4d759

View File

@ -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