2016-05-16 3 views
9

Ich versuche, einige Haskell-Code mit den GHC-Profiling-Tools Profil. Die Kostenstelle, an der ich mich am meisten interessiere, wird jedoch derzeit von einer Reihe von Initialisierungscodes dominiert, die mir eigentlich egal sind.Profil nur eine einzelne Funktion (oder Kostenstelle) mit GHC

Mein Code sieht in etwa wie folgt aus:

main = do 
    x <- lotsOfInitialization 
    print $ {-# SCC "myCostCenter" #-} interestingPart x 

In meinem eigentlichen Code, der lotsOfInitialization teilnimmt ~ 98% der Zeit, und so ist es schwierig, mit jeder Granularität zu sehen, was in interestingPart geschieht.

Ich dachte, dass nur Annotation an einem Ort (und nicht mit -fprof-auto) wäre genug, aber der Bericht, den ich bekomme immer noch zeigt alle Funktionsaufrufe.

Ich versuchte auch eine Striktheit Annotation auf x, aber das schien nichts zu ändern.

Gibt es eine Möglichkeit, GHC mitzuteilen, den Initialisierungscode zu ignorieren oder nur auf die Teile zu fokussieren, die ich möchte?

Antwort

2

Nach der ghc manual können Sie Heap Profiling auf bestimmten Kostenstellen z. mit -hc⟨name⟩ oder -hy⟨type⟩.

Ich konnte keine Lösung finden, die etwas ähnliches für die Zeitprofilierung tut.

EDIT:

Ich habe actuall verwalten, einen Weg zu finden, bequem zu tun, was Sie brauchen, sowohl für die Zuweisung und Zeit Profilerstellung. Wenn Sie den profiteur Visualizer für .prof Dateien verwenden, können Sie das Leistungsprofil nur einer bestimmten Kostenstelle als eine schön formatierte Baumstruktur betrachten.

Verwandte Themen