編譯你的分析程式
GHC 編譯器已經成熟地支援使用分析註釋進行編譯。
在編譯時使用 -prof
和 -fprof-auto
標誌將新增對二進位制檔案的支援,以便在執行時使用效能分析標記。
假設我們有這個程式:
main = print (fib 30)
fib n = if n < 2 then 1 else fib (n-1) + fib (n-2)
像這樣編譯它:
ghc -prof -fprof-auto -rtsopts Main.hs
然後使用執行時系統選項執行它以進行效能分析:
./Main +RTS -p
我們將看到執行後建立的 main.prof
檔案(一旦程式退出),這將為我們提供各種分析資訊,例如成本中心,它們為我們提供了與執行程式碼的各個部分相關的成本細分:
Wed Oct 12 16:14 2011 Time and Allocation Profiling Report (Final)
Main +RTS -p -RTS
total time = 0.68 secs (34 ticks @ 20 ms)
total alloc = 204,677,844 bytes (excludes profiling overheads)
COST CENTRE MODULE %time %alloc
fib Main 100.0 100.0
individual inherited
COST CENTRE MODULE no. entries %time %alloc %time %alloc
MAIN MAIN 102 0 0.0 0.0 100.0 100.0
CAF GHC.IO.Handle.FD 128 0 0.0 0.0 0.0 0.0
CAF GHC.IO.Encoding.Iconv 120 0 0.0 0.0 0.0 0.0
CAF GHC.Conc.Signal 110 0 0.0 0.0 0.0 0.0
CAF Main 108 0 0.0 0.0 100.0 100.0
main Main 204 1 0.0 0.0 100.0 100.0
fib Main 205 2692537 100.0 100.0 100.0 100.0