Eine gute Möglichkeit zu umgehen, kompilieren zu müssen alles mit Profiling ist Cabal Sandbox zu verwenden. Es ermöglicht Ihnen, eine Sandbox nur für eine Anwendung einzurichten, und Sie müssen nicht Ihr gesamtes ~/.cabal
-Präfix neu installieren. Du brauchst eine aktuelle Version von Cabal, also starte zuerst cabal update && cabal install cabal-install
.
Sobald Sie eine Sandbox initialisieren, erstellen Sie eine Datei cabal.config
die erforderlichen Richtlinien enthalten (in Ihrem Fall library-profiling: True
; executable-profiling: True
auch praktisch sein kann.)
Ein Nebeneffekt davon ist, dass Sie Ihren Code testen können mit Abhängigkeiten, die nicht global installiert werden müssen, z. B. experimentelle Versionen oder veraltete Versionen.
EDIT: BTW, ich glaube nicht, dass Sie Profiling aktiviert für criterion
funktionieren müssen. In jedem Fall funktioniert es für mich ohne Profiling wird aktiviert. Schreiben Sie einfach ein Main
Modul, das main = defaultMain benchmarks
enthält, wobei benchmarks
den Typ [Benchmark]
hat, d. H. Eine Liste von Benchmarks, die Sie geschrieben haben.
Sie dann die Datei kompilieren (sagen wir, wir nennen es benchmarks.hs
mit ghc --make -o bench benchmarks.hs
, und das Programm auszuführen, ./bench
mit den entsprechenden Argumenten (siehe hierzu das Kriterium Dokumentation. Ein gutes Standardargument ist, sagen ./bench -o benchmarks.html
, die eine raffinierte generieren Bericht ähnlich wie this one)
Sie können nicht.Sie installieren sie einfach, was ist das Problem? –
1) Ich brauche sie nicht, 2) Die Installation von ihnen ist unglaublich langwierig: http://StackOverflow.com/Questions/1704421/cabal-not-installing-dependencies-wenn-brauche-Profiling-Bibliotheken – nh2
Während ich zustimmen, dass es langweilig ist, ist Ihre Behauptung, dass Sie sie nicht brauchen, eindeutig falsch. –