Demaskierung von Klassenfunktionen in der GHC-Profilerausgabe

8

Beim Profiling eines Haskell-Programms, das in GHC geschrieben wurde, werden die Namen von typeclass-Funktionen in der .prof-Datei gemangelt, um die Implementierungen einer Instanz von einer anderen zu unterscheiden. Wie kann ich diese Namen abmildern, um herauszufinden, welche Typinstanz es ist?

Angenommen, ich habe das folgende Programm, wobei die Typen Fast und Slow beide Show implementieren:

%Vor%

Ich kompiliere mit -prof -auto-all -caf-all und starte mit +RTS -p . In der .prof-Datei, die generiert wird, sehe ich, dass die oberen Kostenstellen sind:

%Vor%

Und im Baum sehe ich ebenfalls (unter Auslassung irrelevanter Linien):

%Vor%

Wie finde ich heraus, dass show_an9 die Slow Implementierung von show und nicht Fast 's ist?

    
Paul Kuliniewicz 11.05.2010, 00:57
quelle

1 Antwort

8

Nein, kannst du nicht. Die Teile _an9 und _anx werden zufällig generiert. (Wenn ich neu kompiliere ich habe _ane und _anC .)

Sie können das Pragma SCC (Set-Kosten-Center) verwenden, um eine Kostenstelle manuell einzufügen:

%Vor%

Das Profil sollte anzeigen:

%Vor%     
kennytm 11.05.2010, 10:57
quelle