mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-27 20:36:07 +03:00
65 lines
2.4 KiB
Haskell
65 lines
2.4 KiB
Haskell
-- dev.hs, for miscellaneous profiling/benchmarking/testing.
|
|
|
|
import Hledger.Utils.Debug
|
|
-- import System.Environment (getArgs)
|
|
import Control.Monad.Except
|
|
import Criterion.Main
|
|
-- import Data.Text.Lazy as LT
|
|
-- import System.Environment
|
|
-- import Hledger
|
|
-- import qualified Hledger.Read.JournalReader as JR
|
|
import qualified Hledger.Read.TimelogReader as TR
|
|
-- import qualified Hledger.Read.TimelogReaderNoJU as TRNOJU
|
|
-- import qualified Hledger.Read.TimelogReaderPP as TRPP
|
|
|
|
inputjournal = "data/10000x1000x10.journal"
|
|
inputtimelog = "data/sample.timelog"
|
|
|
|
main = do
|
|
--
|
|
|
|
-- -- read the input journal
|
|
-- j <- either error id <$> readJournalFile Nothing Nothing True inputfile
|
|
-- -- sanity check we parsed it all
|
|
-- putStrLn $ show $ length $ jtxns j
|
|
|
|
-- benchmark timelog parsing
|
|
-- s <- readFile inputtimelog
|
|
-- putStrLn $ show $ length s
|
|
-- let s = unlines [
|
|
-- "i 2009/03/27 09:00:00 projects:a",
|
|
-- "o 2009/03/27 17:00:34",
|
|
-- "i 2009/03/31 22:21:45 personal:reading:online",
|
|
-- "o 2009/04/01 02:00:34",
|
|
-- "i 2009/04/02 09:00:00 projects:b",
|
|
-- "o 2009/04/02 17:00:34"
|
|
-- ]
|
|
-- -- let output = return . const -- putStrLn.show
|
|
|
|
-- -- withArgs ["-l"] $ defaultMain [bench "timelog polyparse" $ nfIO $ runExceptT $ TRPP.parseJournalWith' TRPP.timelogFile False "" s]
|
|
-- defaultMain [
|
|
-- -- bench ("read "++inputtimelog++" with parsec") $ nfIO $ runExceptT (TR.parse Nothing False "" s) >>= output
|
|
-- -- bench ("read "++inputtimelog++" with parsec, no ju") $ nfIO $ runExceptT (TRNOJU.parse Nothing False "" s) >>= output,
|
|
-- -- bench ("read "++inputtimelog++" polyparse") $ nfIO $ runExceptT (TRPP.parse Nothing False "" s) >>= output
|
|
-- ]
|
|
|
|
-- return ()
|
|
|
|
-- benchWithTimeit = do
|
|
-- getCurrentDirectory >>= printf "Benchmarking hledger in %s with timeit\n"
|
|
-- let opts = defcliopts{output_file_=Just outputfile}
|
|
-- (t0,j) <- timeit ("read "++inputfile) $ either error id <$> readJournalFile Nothing Nothing True inputfile
|
|
-- (t1,_) <- timeit ("print") $ print' opts j
|
|
-- (t2,_) <- timeit ("register") $ register opts j
|
|
-- (t3,_) <- timeit ("balance") $ balance opts j
|
|
-- (t4,_) <- timeit ("stats") $ stats opts j
|
|
-- printf "Total: %0.2fs\n" (sum [t0,t1,t2,t3,t4])
|
|
|
|
-- timeit :: String -> IO a -> IO (Double, a)
|
|
-- timeit name action = do
|
|
-- printf "%s%s" name (replicate (40 - length name) ' ')
|
|
-- (t,a) <- timeItT action
|
|
-- printf "[%.2fs]\n" t
|
|
-- return (t,a)
|
|
|