lib: add a test for journalApplyValue that times itself (#999)

This test prints the time elapsed (before the OK message).
Mainly to support current performance tuning
(make ghcid-test-Hledger.Cli.Utils.journalApplyValue),
but also for future reference.
This commit is contained in:
Simon Michael 2019-04-22 16:40:58 -07:00
parent 168edb910e
commit 08d226aaf5
3 changed files with 29 additions and 2 deletions

View File

@ -51,6 +51,7 @@ import Text.Printf
import Text.Regex.TDFA ((=~))
import System.Time (ClockTime(TOD))
import System.TimeIt
import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds)
import Hledger.Cli.CliOptions
@ -302,4 +303,27 @@ backupNumber f g = case g =~ ("^" ++ f ++ "\\.([0-9]+)$") of
tests_Cli_Utils = tests "Utils" [
tests "journalApplyValue" [
-- Print the time required to convert one of the sample journals' amounts to value.
-- Pretty clunky, but working.
test "time" $ do
ej <- io $ readJournalFile definputopts "examples/3000x1000x10.journal"
case ej of
Left e -> crash $ T.pack e
Right j -> do
(t,_) <- io $ timeItT $ do
-- Enable -V, and ensure the valuation date is later than
-- all prices for consistent timing.
let ropts = defreportopts{
value_=True,
period_=PeriodTo $ parsedate "3000-01-01"
}
j' <- journalApplyValue ropts j
sum (journalAmounts j') `seq` return ()
io $ printf "[%.3fs] " t
ok
]
]

View File

@ -4,7 +4,7 @@ cabal-version: 1.12
--
-- see: https://github.com/sol/hpack
--
-- hash: c25c2177f7c03b76b14aa9fa36b0cb9aba95bb836c183de3361616e41aed526a
-- hash: 3beb53c0c1f2c478c50a7c50e122085de41f983fcec16b3c14c058e2e79b19e1
name: hledger
version: 1.14.99
@ -174,6 +174,7 @@ library
, temporary
, text >=0.11
, time >=1.5
, timeit
, transformers
, unordered-containers
, utf8-string >=0.3.5
@ -223,6 +224,7 @@ executable hledger
, temporary
, text >=0.11
, time >=1.5
, timeit
, transformers
, unordered-containers
, utf8-string >=0.3.5
@ -277,6 +279,7 @@ test-suite test
, test-framework-hunit
, text >=0.11
, time >=1.5
, timeit
, transformers
, unordered-containers
, utf8-string >=0.3.5

View File

@ -134,6 +134,7 @@ dependencies:
- temporary
- text >=0.11
- time >=1.5
- timeit
- transformers
- unordered-containers
- utf8-string >=0.3.5
@ -215,4 +216,3 @@ benchmarks:
- hledger
- criterion
- html
- timeit