Ich suche nach Optimierungsmöglichkeiten in meinem Haskell-Programm, indem ich mit -prof
kompiliere, aber ich kann die Kostenstellen, die Ellipsen enthalten, nicht interpretieren. Was sind filter.(...)
und jankRoulette.select.(...)
?Was bedeutet. (...) in einem .prof-Bericht bedeuten?
COST CENTRE MODULE %time %alloc
filter.(...) Forest 46.5 22.3
set-union Forest 22.5 4.1
cache-lookup Forest 16.0 0.1
removeMany MultiMapSet 3.7 1.9
insertMany MultiMapSet 3.3 1.8
jankRoulette.select.(...) Forest 1.4 15.2
I erzeugt, mit: $ ghc --make -rtsopts -prof -auto-all main.hs && ./main +RTS -p && cat main.prof
Die Funktion filter
einige Definitionen in einer where
Klausel hat, wie folgt aus:
filter a b = blahblah where
foo = bar
bar = baz
baz = bing
Aber alle zeigen sich als filter.foo
, filter.bar
, etc
Ich dachte, sie könnten verschachtelt sein lassen Ausdrücke, aber jankRoulette.select
hat keine. Und ich habe SCC-Richtlinien vor den meisten von ihnen hinzugefügt, ohne dass diese Kostenstellen an die Spitze gehen.
Da die meiste Zeit in filter.(...)
verbracht wird, würde ich gerne wissen, was das ist. :)
Da der 'TODO'-Kommentar im Code, den bennofs-Zitate vorschlagen sollten, GHC-Profiler-Berichte (und so ziemlich alles, was der Compiler ausgibt) immer mit dem Ergebnis von 'ghc --version' einhergehen sollte. – dfeuer
Danke für die Erinnerung! Für die Nachwelt betreibe ich das Glorious Glasgow Haskell Compilation System, Version 7.8.1. – alltom