stats: fix O(n^2) performance, now much faster on large journals

This commit is contained in:
Simon Michael 2015-06-19 11:07:35 -07:00
parent 745f2dd788
commit e516aa6c3c
2 changed files with 5 additions and 1 deletions

View File

@ -13,6 +13,8 @@ where
import Data.List
import Data.Maybe
import Data.Ord
import Data.HashSet (size, fromList)
import Data.Text (pack)
import Data.Time.Calendar
import System.Console.CmdArgs.Explicit
import Text.Printf
@ -63,7 +65,7 @@ showLedgerStats l today span =
,("Transactions", printf "%d (%0.1f per day)" tnum txnrate)
,("Transactions last 30 days", printf "%d (%0.1f per day)" tnum30 txnrate30)
,("Transactions last 7 days", printf "%d (%0.1f per day)" tnum7 txnrate7)
,("Payees/descriptions", show $ length $ nub $ map tdescription ts)
,("Payees/descriptions", show $ size $ fromList $ map (pack . tdescription) ts)
,("Accounts", printf "%d (depth %d)" acctnum acctdepth)
,("Commodities", printf "%s (%s)" (show $ length cs) (intercalate ", " cs))
-- Transactions this month : %(monthtxns)s (last month in the same period: %(lastmonthtxns)s)

View File

@ -74,6 +74,7 @@ library
,base-compat >= 0.8.1
-- ,cabal-file-th
,containers
,unordered-containers
,cmdargs >= 0.10 && < 0.11
,csv
-- ,data-pprint >= 0.2.1 && < 0.3
@ -128,6 +129,7 @@ executable hledger
,base >= 4.3 && < 5
,base-compat >= 0.8.1
,containers
,unordered-containers
,cmdargs >= 0.10 && < 0.11
,csv
-- ,data-pprint >= 0.2.1 && < 0.3