profiling
This commit is contained in:
parent
bf1ef56fb9
commit
a197cf743d
1 changed files with 45 additions and 0 deletions
|
@ -0,0 +1,45 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""profiling"""
|
||||||
|
date="2016-09-26T19:20:36Z"
|
||||||
|
content="""
|
||||||
|
Built git-annex with profiling, using `stack build --profile`
|
||||||
|
|
||||||
|
(For reproduciblity, running git-annex in a clone of the git-annex repo
|
||||||
|
https://github.com/RichiH/conference_proceedings with rev
|
||||||
|
2797a49023fc24aff6fcaec55421572e1eddcfa2 checked out. It has 9496 annexed
|
||||||
|
objects.)
|
||||||
|
|
||||||
|
Profiling `git-annex find +RTS -p`:
|
||||||
|
|
||||||
|
total time = 3.53 secs (3530 ticks @ 1000 us, 1 processor)
|
||||||
|
total alloc = 3,772,700,720 bytes (excludes profiling overheads)
|
||||||
|
|
||||||
|
COST CENTRE MODULE %time %alloc
|
||||||
|
|
||||||
|
spanList Data.List.Utils 32.6 37.7
|
||||||
|
startswith Data.List.Utils 14.3 8.1
|
||||||
|
md5 Data.Hash.MD5 12.4 18.2
|
||||||
|
join Data.List.Utils 6.9 13.7
|
||||||
|
catchIO Utility.Exception 5.9 6.0
|
||||||
|
catches Control.Monad.Catch 5.0 2.8
|
||||||
|
inAnnex'.checkindirect Annex.Content 4.6 1.8
|
||||||
|
readish Utility.PartialPrelude 3.0 1.4
|
||||||
|
isAnnexLink Annex.Link 2.6 4.0
|
||||||
|
split Data.List.Utils 1.5 0.8
|
||||||
|
keyPath Annex.Locations 1.2 1.7
|
||||||
|
|
||||||
|
|
||||||
|
This is interesting!
|
||||||
|
|
||||||
|
Fully 40% of CPU time and allocations are in list (really String) processing,
|
||||||
|
and the details of the profiling report show that `spanList` and `startsWith`
|
||||||
|
and `join` are all coming from calls to `replace` in `keyFile` and `fileKey`.
|
||||||
|
Both functions nest several calls to replace, so perhaps that could be unwound
|
||||||
|
into a single pass and/or a ByteString used to do it more efficiently.
|
||||||
|
|
||||||
|
12% of run time is spent calculating the md5 hashes for the hash
|
||||||
|
directories for .git/annex/objects. Data.Hash.MD5 is from missingh, and
|
||||||
|
it is probably a quite unoptimised version. Switching to the version
|
||||||
|
if cryptonite would probably speed it up a lot.
|
||||||
|
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue