mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-25 19:31:44 +03:00
tools: benchmarking updates, add experimental criterion/progression runners
This commit is contained in:
parent
553358087f
commit
aaa8b369fa
34
Makefile
34
Makefile
@ -14,10 +14,10 @@ PROFCMD=-f 1000x1000x10.ledger balance
|
||||
# command to run during "make coverage"
|
||||
COVCMD=test
|
||||
|
||||
# executables to run during "make benchmark". They should be on the path
|
||||
# executables to run during "make simplebench". They should be on the path
|
||||
# or in the current directory. hledger executables should generally be the
|
||||
# standard cabal builds, also constrained to parsec 2 for now.
|
||||
BENCHEXES=hledger-0.6 hledger-0.7 ledger-3pre
|
||||
BENCHEXES=hledger-0.7 hledger-0.8 ledger-3pre
|
||||
|
||||
# misc. tools
|
||||
PANDOC=pandoc
|
||||
@ -113,9 +113,17 @@ tools/unittest: tools/unittest.hs
|
||||
tools/doctest: tools/doctest.hs
|
||||
ghc --make tools/doctest.hs
|
||||
|
||||
# build the benchmark runner. Requires tabular.
|
||||
tools/bench: tools/bench.hs
|
||||
ghc --make tools/bench.hs
|
||||
# build the simple benchmark runner. Requires tabular.
|
||||
tools/simplebench: tools/simplebench.hs
|
||||
ghc --make tools/simplebench.hs
|
||||
|
||||
# build the criterion-based benchmark runner. Requires criterion.
|
||||
tools/criterionbench: tools/criterionbench.hs
|
||||
ghc --make tools/criterionbench.hs
|
||||
|
||||
# build the progression-based benchmark runner. Requires progression.
|
||||
tools/progressionbench: tools/progressionbench.hs
|
||||
ghc --make tools/progressionbench.hs
|
||||
|
||||
# build the generateledger tool
|
||||
tools/generateledger: tools/generateledger.hs
|
||||
@ -195,13 +203,21 @@ fullcabaltest: setversion
|
||||
&& cabal upload dist/hledger-$(VERSION).tar.gz --check -v3 \
|
||||
&& echo $@ passed) || echo $@ FAILED
|
||||
|
||||
# run performance benchmarks and save results in profs/.
|
||||
# run performance benchmarks and save textual results in profs/.
|
||||
# Requires some commands defined in bench.tests and some BENCHEXES defined above.
|
||||
benchmark: sampleledgers bench.tests tools/bench
|
||||
simplebench bench: sampleledgers bench.tests tools/simplebench
|
||||
PATH=.:$(PATH) tools/bench -fbench.tests $(BENCHEXES) | tee profs/$(TIME).bench
|
||||
@rm -f benchresults.*
|
||||
@(cd profs; rm -f latest.bench; ln -s $(TIME).bench latest.bench)
|
||||
|
||||
# run criterion benchmark tests and save graphical results
|
||||
criterionbench: sampleledgers tools/criterionbench
|
||||
tools/criterionbench -t png -k png
|
||||
|
||||
# run progression benchmark tests and save graphical results
|
||||
progressionbench: sampleledgers tools/progressionbench
|
||||
tools/progressionbench -- -t png -k png
|
||||
|
||||
# generate, save and display a standard profile
|
||||
prof: sampleledgers hledgerp
|
||||
@echo "Profiling $(PROFCMD)"
|
||||
@ -401,7 +417,7 @@ hoogleindex:
|
||||
#
|
||||
# - The VERSION file must be updated manually before a release.
|
||||
#
|
||||
# - "make benchmark" depends on version numbers in BENCHEXES, these also
|
||||
# - "make simplebench" depends on version numbers in BENCHEXES, these also
|
||||
# must be updated manually.
|
||||
#
|
||||
# - "make" updates the version in most other places, and defines PATCHES.
|
||||
@ -489,7 +505,7 @@ pushbinary:
|
||||
-rsync -aP $(BINARYFILENAME).gz joyful.com:/repos/hledger/website/binaries/
|
||||
|
||||
# show project stats useful for release notes
|
||||
stats: showlastreleasedate showreleaseauthors showloc showcov showerrors showlocalchanges showreleasechanges benchmark
|
||||
stats: showlastreleasedate showreleaseauthors showloc showcov showerrors showlocalchanges showreleasechanges simplebench
|
||||
|
||||
showreleaseauthors:
|
||||
@echo Patch authors since last release:
|
||||
|
10
tools/criterionbench.hs
Normal file
10
tools/criterionbench.hs
Normal file
@ -0,0 +1,10 @@
|
||||
{- Criterion-based benchmarks. Criterion displays and minimises the impact
|
||||
of time variance and charts the results. -}
|
||||
|
||||
import Criterion.Main
|
||||
import System.Environment (withArgs)
|
||||
import qualified HledgerMain
|
||||
|
||||
main = defaultMain [
|
||||
bench "balance_100x100x10" $ nfIO $ withArgs ["balance", "-f", "100x100x10.ledger", ">/dev/null"] HledgerMain.main
|
||||
]
|
9
tools/progressionbench.hs
Normal file
9
tools/progressionbench.hs
Normal file
@ -0,0 +1,9 @@
|
||||
{- Progression-based benchmarks. Progression charts the difference between successive benchmark runs. -}
|
||||
|
||||
import Criterion.Main hiding (defaultMain, defaultMainWith)
|
||||
import Progression.Main
|
||||
import System.Environment (withArgs)
|
||||
import qualified HledgerMain
|
||||
|
||||
main = defaultMain $
|
||||
bench "balance_100x100x10" $ nfIO $ withArgs ["balance", "-f", "100x100x10.ledger", ">/dev/null"] HledgerMain.main
|
Loading…
Reference in New Issue
Block a user