mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-07 21:15:19 +03:00
tools: use cabal builds for profiling
This commit is contained in:
parent
187a4ec123
commit
b6ad593c8a
33
Makefile
33
Makefile
@ -4,8 +4,7 @@
|
||||
export LANG=en_US.UTF-8
|
||||
|
||||
# command to run during "make prof" and "make heap"
|
||||
PROFCMD=bin/hledgerprof balance -f data/1000x1000x10.journal >/dev/null
|
||||
PROFCMD=bin/hledgerprof -f test-wf.csv print
|
||||
PROFCMD=bin/hledger-prof balance -f data/1000x1000x10.journal >/dev/null
|
||||
|
||||
#PROFRTSFLAGS=-p
|
||||
PROFRTSFLAGS=-P
|
||||
@ -196,7 +195,7 @@ sp:
|
||||
(echo '"sp" is required for auto-compilation. darcs get http://joyful.com/darcsden/simon/searchpath, make it (cabal install-ing any needed packages) and add it to your PATH'; exit 1)
|
||||
|
||||
# force a compile even if binary exists, since we don't specify dependencies for these
|
||||
.PHONY: bin/hledgerdev bin/hledgerprof bin/hledgeropt bin/hledger-webdev
|
||||
.PHONY: bin/hledgerdev bin/hledger-prof bin/hledgeropt bin/hledger-webdev
|
||||
|
||||
# build hledger binary as quickly as possible
|
||||
bin/hledgerdev:
|
||||
@ -218,9 +217,15 @@ bin/hledgerdev.ghcall: \
|
||||
bin/hledgeropt:
|
||||
$(GHC) $(MAIN) -o $@ $(BUILDFLAGS) -O2 # -fvia-C # -fexcess-precision -optc-O3 -optc-ffast-math
|
||||
|
||||
# build the time profiling binary. cabal install --reinstall -p some libs may be required.
|
||||
bin/hledgerprof:
|
||||
$(GHC) $(BUILDFLAGS) $(PROFBUILDFLAGS) $(MAIN) -o $@
|
||||
# build the production (cabal) build with profiling enabled.
|
||||
bin/hledger-prof:
|
||||
cabal install -p --enable-executable-profiling --ghc-options=-fprof-auto ./hledger-lib ./hledger \
|
||||
&& mv .cabal-sandbox/bin/hledger bin/hledger-prof
|
||||
|
||||
# build the dev build with profiling enabled.
|
||||
# not working with cabal sandbox
|
||||
# bin/hledgerdev-prof:
|
||||
# $(GHC) $(BUILDFLAGS) $(PROFBUILDFLAGS) $(MAIN) -o $@
|
||||
|
||||
# build the heap profiling binary for coverage reports and heap profiles.
|
||||
# Keep these .o files separate from the regular ones.
|
||||
@ -490,10 +495,10 @@ progressionbench: samplejournals tools/progressionbench
|
||||
tools/progressionbench -- -t png -k png
|
||||
|
||||
# generate and archive an execution profile
|
||||
prof: samplejournals bin/hledgerprof
|
||||
prof: samplejournals #bin/hledger-prof
|
||||
@echo "Profiling: $(PROFCMD)"
|
||||
-$(PROFCMD) +RTS $(PROFRTSFLAGS) -RTS
|
||||
mv hledgerprof.prof profs/$(TIME).prof
|
||||
mv hledger-prof.prof profs/$(TIME).prof
|
||||
(cd profs; rm -f latest*.prof; ln -s $(TIME).prof latest.prof)
|
||||
|
||||
# generate, archive, simplify and display an execution profile
|
||||
@ -501,16 +506,16 @@ viewprof: prof
|
||||
tools/simplifyprof.hs profs/latest.prof
|
||||
|
||||
# generate and display an execution profile, don't save or simplify
|
||||
quickprof: samplejournals bin/hledgerprof
|
||||
quickprof: samplejournals #bin/hledger-prof
|
||||
@echo "Profiling: $(PROFCMD)"
|
||||
-$(PROFCMD) +RTS $(PROFRTSFLAGS) -RTS
|
||||
echo; cat hledgerprof.prof
|
||||
echo; cat hledger-prof.prof
|
||||
|
||||
# generate and archive a graphical heap profile
|
||||
heap: samplejournals bin/hledgerprof
|
||||
heap: samplejournals #bin/hledger-prof
|
||||
@echo "Profiling heap with: $(PROFCMD)"
|
||||
$(PROFCMD) +RTS -hc -RTS
|
||||
mv hledgerprof.hp profs/$(TIME).hp
|
||||
mv hledger-prof.hp profs/$(TIME).hp
|
||||
(cd profs; rm -f latest.hp; ln -s $(TIME).hp latest.hp; \
|
||||
hp2ps $(TIME).hp; rm -f latest.ps; ln -s $(TIME).ps latest.ps; rm -f *.aux)
|
||||
|
||||
@ -518,10 +523,10 @@ viewheap: heap
|
||||
$(VIEWPS) profs/latest.ps
|
||||
|
||||
# generate and display a graphical heap profile, don't save
|
||||
quickheap: samplejournals bin/hledgerprof
|
||||
quickheap: samplejournals #bin/hledger-prof
|
||||
@echo "Profiling heap with: $(PROFCMD)"
|
||||
$(PROFCMD) +RTS -hc -RTS
|
||||
hp2ps hledgerprof.hp
|
||||
hp2ps hledger-prof.hp
|
||||
$(VIEWPS) hledger.ps
|
||||
|
||||
# display a code coverage text report from running hledger COVCMD
|
||||
|
Loading…
Reference in New Issue
Block a user