hledger/dev.hs
2015-08-23 10:20:12 -07:00

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)