Angenommen, Sie möchten nicht nur die Gesamtlaufzeit Ihres Programms messen, so:
%Vor%Dann können Sie in Haskell eine Berechnung auf verschiedene Arten durchführen:
Wenn Sie eine statistisch fundierte Messung wünschen, sollten Sie
beachtenSchließlich müssen Sie in allen Fällen über eine faule Bewertung nachdenken: Möchten Sie die Kosten für die vollständige Auswertung der von Ihnen erzeugten Daten oder nur für den äußersten Konstruktor messen?
1) Wenn Sie etwas benchmarken möchten, verwenden Sie das Kriterium -Paket.
2) Wenn du eine Funktion zeitlich bestimmen willst und positiv bist, hast du für Faulheit nach Bedarf gesteuert, dann benutze Data.Time.getCurrentTime
von der time Paket.:
Eine bessere Verpackung des obigen Musters finden Sie im Paket timeit .
3) Wenn Sie tatsächlich die Laufzeit eines Programms wünschen, das gerade in Haskell geschrieben ist, dann benutzen Sie Ihr System time
. Für die meisten POSIX-Systeme (Mac, Linux) einfach ausführen:
Und es meldet Benutzer-, Wand- und Systemzeit.
Ich bin mir nicht sicher, wie genau es ist, aber die Verwendung von :set +s
in ghci zeigt die Zeit und den Platz für nachfolgende Berechnungen an.
:set +s
ist wirklich ordentlich, wenn Sie ghci verwenden, sonst können Sie Criterion.Measurement
verwenden, siehe meine Antwort auf eine andere Frage mit Beispiel .
Tags und Links haskell profiling time execution measurement