Profiliere nur eine einzelne Funktion (oder Kostenstelle) mit GHC

9

Ich versuche, einen Haskell-Code mithilfe der GHC-Profiling-Tools zu erstellen. Die Kostenstelle, für die ich mich am meisten interessiere, wird derzeit jedoch von einer Reihe von Initialisierungscodes dominiert, die mich nicht wirklich interessieren.

Mein Code sieht ungefähr so ​​aus:

%Vor%

In meinem eigentlichen Code dauert der lotsOfInitialization -Teil ~ 98% der Zeit und so ist es schwierig, mit einer Granularität zu sehen, was in interestingPart passiert.

Ich dachte, dass nur Annotationen an einer Stelle (und nicht -fprof-auto ) ausreichen würden, aber der Bericht, den ich bekomme, zeigt immer noch alle Funktionsaufrufe.

Ich habe auch eine Strictness Annotation auf x versucht, aber das schien nichts zu ändern.

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

    
Karl 16.05.2016, 20:47
quelle

1 Antwort

2

Laut ghc-Handbuch < Sie können Heap-Profiling auf bestimmten Kostenstellen durchführen, z mit -hc⟨name⟩ oder -hy⟨type⟩.

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

BEARBEITEN:

Ich habe es tatsächlich geschafft, einen Weg zu finden, um bequem das zu tun, was Sie sowohl für die Zuweisung als auch für die Zeitprofilierung benötigen. Wenn Sie den Visualizer profiteur für .prof -Dateien verwenden, können Sie das Leistungsprofil einer bestimmten Kostenstelle als schön formatiert ansehen Baumkarte.

    
Christof Schramm 24.05.2017 19:47
quelle

Tags und Links