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:
		
							parent
							
								
									168edb910e
								
							
						
					
					
						commit
						08d226aaf5
					
				| @ -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 | ||||
| 
 | ||||
|   ] | ||||
| 
 | ||||
|  ] | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user