mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-07 19:41:47 +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
|
export LANG=en_US.UTF-8
|
||||||
|
|
||||||
# command to run during "make prof" and "make heap"
|
# command to run during "make prof" and "make heap"
|
||||||
PROFCMD=bin/hledgerprof balance -f data/1000x1000x10.journal >/dev/null
|
PROFCMD=bin/hledger-prof balance -f data/1000x1000x10.journal >/dev/null
|
||||||
PROFCMD=bin/hledgerprof -f test-wf.csv print
|
|
||||||
|
|
||||||
#PROFRTSFLAGS=-p
|
#PROFRTSFLAGS=-p
|
||||||
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)
|
(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
|
# 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
|
# build hledger binary as quickly as possible
|
||||||
bin/hledgerdev:
|
bin/hledgerdev:
|
||||||
@ -218,9 +217,15 @@ bin/hledgerdev.ghcall: \
|
|||||||
bin/hledgeropt:
|
bin/hledgeropt:
|
||||||
$(GHC) $(MAIN) -o $@ $(BUILDFLAGS) -O2 # -fvia-C # -fexcess-precision -optc-O3 -optc-ffast-math
|
$(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.
|
# build the production (cabal) build with profiling enabled.
|
||||||
bin/hledgerprof:
|
bin/hledger-prof:
|
||||||
$(GHC) $(BUILDFLAGS) $(PROFBUILDFLAGS) $(MAIN) -o $@
|
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.
|
# build the heap profiling binary for coverage reports and heap profiles.
|
||||||
# Keep these .o files separate from the regular ones.
|
# Keep these .o files separate from the regular ones.
|
||||||
@ -490,10 +495,10 @@ progressionbench: samplejournals tools/progressionbench
|
|||||||
tools/progressionbench -- -t png -k png
|
tools/progressionbench -- -t png -k png
|
||||||
|
|
||||||
# generate and archive an execution profile
|
# generate and archive an execution profile
|
||||||
prof: samplejournals bin/hledgerprof
|
prof: samplejournals #bin/hledger-prof
|
||||||
@echo "Profiling: $(PROFCMD)"
|
@echo "Profiling: $(PROFCMD)"
|
||||||
-$(PROFCMD) +RTS $(PROFRTSFLAGS) -RTS
|
-$(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)
|
(cd profs; rm -f latest*.prof; ln -s $(TIME).prof latest.prof)
|
||||||
|
|
||||||
# generate, archive, simplify and display an execution profile
|
# generate, archive, simplify and display an execution profile
|
||||||
@ -501,16 +506,16 @@ viewprof: prof
|
|||||||
tools/simplifyprof.hs profs/latest.prof
|
tools/simplifyprof.hs profs/latest.prof
|
||||||
|
|
||||||
# generate and display an execution profile, don't save or simplify
|
# generate and display an execution profile, don't save or simplify
|
||||||
quickprof: samplejournals bin/hledgerprof
|
quickprof: samplejournals #bin/hledger-prof
|
||||||
@echo "Profiling: $(PROFCMD)"
|
@echo "Profiling: $(PROFCMD)"
|
||||||
-$(PROFCMD) +RTS $(PROFRTSFLAGS) -RTS
|
-$(PROFCMD) +RTS $(PROFRTSFLAGS) -RTS
|
||||||
echo; cat hledgerprof.prof
|
echo; cat hledger-prof.prof
|
||||||
|
|
||||||
# generate and archive a graphical heap profile
|
# generate and archive a graphical heap profile
|
||||||
heap: samplejournals bin/hledgerprof
|
heap: samplejournals #bin/hledger-prof
|
||||||
@echo "Profiling heap with: $(PROFCMD)"
|
@echo "Profiling heap with: $(PROFCMD)"
|
||||||
$(PROFCMD) +RTS -hc -RTS
|
$(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; \
|
(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)
|
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
|
$(VIEWPS) profs/latest.ps
|
||||||
|
|
||||||
# generate and display a graphical heap profile, don't save
|
# generate and display a graphical heap profile, don't save
|
||||||
quickheap: samplejournals bin/hledgerprof
|
quickheap: samplejournals #bin/hledger-prof
|
||||||
@echo "Profiling heap with: $(PROFCMD)"
|
@echo "Profiling heap with: $(PROFCMD)"
|
||||||
$(PROFCMD) +RTS -hc -RTS
|
$(PROFCMD) +RTS -hc -RTS
|
||||||
hp2ps hledgerprof.hp
|
hp2ps hledger-prof.hp
|
||||||
$(VIEWPS) hledger.ps
|
$(VIEWPS) hledger.ps
|
||||||
|
|
||||||
# display a code coverage text report from running hledger COVCMD
|
# display a code coverage text report from running hledger COVCMD
|
||||||
|
Loading…
Reference in New Issue
Block a user