Próbuję profilować niektóre kody Haskell za pomocą narzędzi profilowania GHC. Centrum kosztów, które mnie najbardziej interesuje, jest obecnie zdominowane przez pakiet kodu inicjalizacyjnego, którego tak naprawdę nie obchodzi.Profil tylko pojedyncza funkcja (lub centrum kosztów) z GHC
Mój kod wygląda mniej więcej coś takiego:
main = do
x <- lotsOfInitialization
print $ {-# SCC "myCostCenter" #-} interestingPart x
W moim faktycznym kodzie lotsOfInitialization
część trwa ~ 98% czasu, a więc trudno jest zobaczyć z każdej ziarnistości, co dzieje się wewnątrz interestingPart
.
Myślałem, że wystarczy tylko adnotacja w jednym miejscu (i nie używanie -fprof-auto
), ale raport, który otrzymuję, pokazuje wszystkie wywołania funkcji.
Próbowałem też adnotacji o rygorystyczności na x
, ale to niczego nie zmieniło.
Czy jest jakiś sposób, aby powiedzieć GHC, aby zignorował kod inicjujący lub skupił się tylko na częściach, które chcę?