Is it possible profile single SCC’s ? e.g. the result of a given function, after reduction to normal form.
Let’s say I want to analyze `primal` :
let
tup = f input1 input2
primal = {-# SCC primal #-} fst $!! tup
Time:
- .prof files only contain normalized times and allocations, as percentages, e.g. :
mem-bench +RTS -p -RTS
total time = 0.01 secs (6 ticks @ 1000 us, 1 processor)
total alloc = 9,873,104 bytes (excludes profiling overheads)
COST CENTRE MODULE SRC %time %alloc
unsafeLinearWrite Data.Massiv.Array.Manifest.Unboxed src/Data/Massiv/Array/Manifest/Unboxed.hs:(156,3)-(157,74) 16.7 0.0
Is it enough to compute the proportion of total alloc (i.e. scc_time = %time * total_time ) for a given SCC?
Memory:
I imagine one would extract the eventlog with one of the RTS `-l` flags, but documentation on the various eventlog processing tools is quite sparse.
Alternatively, I’ve used `weigh` in the past but it’s incompatible with multithreading and some of my use cases use that feature instead.
Thank you for all pointers!