git-annex/doc/profiling/comment_5_1ca8d9765e6e3a18ae09df74bc390a00._comment
2019-01-14 18:01:02 -04:00

80 lines
6.3 KiB
Text

[[!comment format=mdwn
username="joey"
subject="""comment 5"""
date="2019-01-14T21:18:17Z"
content="""
After switching many internal types to ByteString.
(Note that stack build --profile built this with -O, not -O2, so it's not
as fast as it ought to be, but the cost centers are probably fairly
accurate still.)
Mon Jan 14 17:17 2019 Time and Allocation Profiling Report (Final)
git-annex +RTS -p -RTS find
total time = 3.07 secs (3074 ticks @ 1000 us, 1 processor)
total alloc = 1,880,855,184 bytes (excludes profiling overheads)
COST CENTRE MODULE SRC %time %alloc
inAnnex'.checkindirect Annex.Content Annex/Content.hs:(106,9)-(121,39) 31.6 41.0
splitc Utility.Split Utility/Split.hs:(24,1)-(26,25) 4.8 5.2
keyFile' Annex.Locations Annex/Locations.hs:(518,1)-(524,30) 4.5 5.2
encodeW8 Utility.FileSystemEncoding Utility/FileSystemEncoding.hs:(189,1)-(191,70) 3.1 3.6
>>=.\ Data.Attoparsec.Internal.Types Data/Attoparsec/Internal/Types.hs:(146,9)-(147,44) 2.5 0.7
_encodeFilePath Utility.FileSystemEncoding Utility/FileSystemEncoding.hs:(111,1)-(114,49) 2.5 2.7
>>=.\.succ' Data.Attoparsec.Internal.Types Data/Attoparsec/Internal/Types.hs:146:13-76 2.2 0.2
fileKey' Annex.Locations Annex/Locations.hs:(532,1)-(541,41) 2.2 1.5
getState Annex Annex.hs:(254,1)-(257,27) 2.1 0.4
getAnnexLinkTarget'.probesymlink Annex.Link Annex/Link.hs:77:9-62 1.9 2.5
w82s Utility.FileSystemEncoding Utility/FileSystemEncoding.hs:217:1-15 1.8 5.2
keyPath Annex.Locations Annex/Locations.hs:(551,1)-(553,23) 1.7 3.5
keyFile'.esc Annex.Locations Annex/Locations.hs:(520,9)-(524,30) 1.6 4.7
fileKey'.go Annex.Locations Annex/Locations.hs:535:9-63 1.6 1.6
s2w8 Utility.FileSystemEncoding Utility/FileSystemEncoding.hs:214:1-15 1.3 3.5
withPtr Basement.Block.Base Basement/Block/Base.hs:(395,1)-(404,31) 1.3 0.5
parseLinkTarget Annex.Link Annex/Link.hs:(247,1)-(255,25) 1.2 3.8
parseKeyVariety Types.Key Types/Key.hs:(135,1)-(184,41) 1.2 0.0
assertLocal Git Git.hs:(123,1)-(129,28) 0.8 1.6
decodeBS' Utility.FileSystemEncoding Utility/FileSystemEncoding.hs:151:1-31 0.6 2.4
Notice that the percent of time inAnnex' went up from 14.1% to 31.6%.
That and getAnnexLinkTarget are the meat of the IO, so it's good for them
to get a higher percent of the CPU, to the extent they're IO bound.
It seems like getAnnexLinkTarget also lost a lot of non-IO overhead.
There are still some overheads from conversion to and from ByteString,
but the above does seem like a good improvement.
Mon Jan 14 17:56 2019 Time and Allocation Profiling Report (Final)
git-annex +RTS -p -RTS find --not --in web
total time = 7.62 secs (7622 ticks @ 1000 us, 1 processor)
total alloc = 1,908,064,368 bytes (excludes profiling overheads)
COST CENTRE MODULE SRC %time %alloc
catObjectDetails.\ Git.CatFile Git/CatFile.hs:(83,88)-(91,97) 6.5 3.8
catchDefaultIO Utility.Exception Utility/Exception.hs:57:1-53 6.4 2.5
parseResp Git.CatFile Git/CatFile.hs:(141,1)-(152,28) 4.9 5.0
MAIN MAIN <built-in> 4.6 0.4
>>=.\ Data.Attoparsec.Internal.Types Data/Attoparsec/Internal/Types.hs:(146,9)-(147,44) 4.6 1.7
>>=.\.succ' Data.Attoparsec.Internal.Types Data/Attoparsec/Internal/Types.hs:146:13-76 4.1 0.7
getState Annex Annex.hs:(254,1)-(257,27) 2.7 1.1
simplifyPath Utility.Path Utility/Path.hs:(38,1)-(50,48) 2.6 6.8
splitc Utility.Split Utility/Split.hs:(24,1)-(26,25) 2.5 5.1
keyFile' Annex.Locations Annex/Locations.hs:(518,1)-(524,30) 1.7 5.2
getAnnexLinkTarget'.probesymlink Annex.Link Annex/Link.hs:77:9-62 1.7 2.6
journalFile Annex.Journal Annex/Journal.hs:(107,1)-(112,33) 1.7 5.7
catches Control.Monad.Catch src/Control/Monad/Catch.hs:(795,1)-(799,76) 1.7 2.7
query.send Git.CatFile Git/CatFile.hs:137:9-32 1.6 0.5
delEntry Utility.Env Utility/Env.hs:(57,1)-(60,48) 1.6 0.8
encodeW8 Utility.FileSystemEncoding Utility/FileSystemEncoding.hs:(189,1)-(191,70) 1.4 3.5
query Git.CatFile Git/CatFile.hs:(130,1)-(138,26) 1.3 0.0
Notice that allocations dropped by 1/3rd!
Otherwise, not a large change here..
"""]]