GHC로 작성된 Haskell 프로그램을 프로파일 링 할 때, typeclass 함수의 이름은 .prof 파일에서 변환되어 한 인스턴스의 구현을 다른 것으로 구별합니다. 어떤 이름의 인스턴스인지 알아 내기 위해이 이름들을 어떻게 변형 할 수 있습니까?GHC 프로파일 러 출력의 기본 함수 디맹 글링
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)
내가 -prof -auto-all -caf-all
로 컴파일하고 +RTS -p
실행 :
예를 들어, 내가 유형 Fast
및 Slow
모두 Show
을 구현하는 다음 프로그램을, 있다고 가정합니다. 생성 된 가져옵니다 .prof 파일에서, 나는 상위 비용 센터는 것을 볼 :
COST CENTRE MODULE %time %alloc
show_an9 Main 71.0 83.3
sum' Main 29.0 16.7
그리고 트리에서
, 나는 마찬가지로 (관련이없는 라인을 생략)를 참조하십시오 : 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
을 내가 파악 할 방법 그 가 Slow
의 구현이 show
이고 Fast
이 아닌 것입니까?