Khi lược tả chương trình Haskell được viết bằng GHC, tên của các hàm typeclass bị xáo trộn trong tệp .prof để phân biệt việc triển khai thực hiện của một cá thể từ một tệp khác. Làm thế nào tôi có thể loại bỏ các tên này để tìm ra thể loại của nó là gì?Gỡ rối các chức năng kiểu chữ trong đầu ra hồ sơ GHC
Ví dụ, giả sử tôi có chương trình sau đây, nơi các loại Fast
và Slow
cả thực hiện Show
:
import Data.List (foldl')
sum' = foldl' (+) 0
data Fast = Fast
instance Show Fast where
show _ = show $ sum' [1 .. 10]
data Slow = Slow
instance Show Slow where
show _ = show $ sum' [1 .. 100000000]
main = putStrLn (show Fast ++ show Slow)
tôi biên dịch với -prof -auto-all -caf-all
và chạy với +RTS -p
. Trong tập tin .prof đó được tạo ra, tôi thấy rằng các trung tâm chi phí đầu là:
COST CENTRE MODULE %time %alloc
show_an9 Main 71.0 83.3
sum' Main 29.0 16.7
Và trong cây, tôi tương tự như vậy thấy (bỏ qua dòng không liên quan):
individual inherited
COST CENTRE MODULE no. entries %time %alloc %time %alloc
main Main 232 1 0.0 0.0 100.0 100.0
show_an9 Main 235 1 71.0 83.3 100.0 100.0
sum' Main 236 0 29.0 16.7 29.0 16.7
show_anx Main 233 1 0.0 0.0 0.0 0.0
Làm thế nào để tìm ra rằng là thực hiện Slow
của show
và không phải là Fast
của?