Jestem nowy w Haskell i chciałbym móc wykonać czas wykonania danego wywołania funkcji lub fragment kodu.Pisanie funkcji czasu w Haskell
W Clojure mogę użyć "time ':
user=> (time (apply * (range 2 10000)))
"Elapsed time: 289.795 msecs"
2846259680917054518906413212119868890148051...
W Scala, mogę zdefiniować funkcję sobie:
scala> def time[T](code : => T) = {
| val t0 = System.nanoTime : Double
| val res = code
| val t1 = System.nanoTime : Double
| println("Elapsed time " + (t1 - t0)/1000000.0 + " msecs")
| res
| }
time: [T](=> T)T
scala> time((1 to 10000).foldLeft(1:BigInt)(_*_))
Elapsed time 274.292224 msecs
res0: BigInt = 284625968091705451...
Jak mogę napisać równowartość mojej funkcji Scala lub Clojure jest' czas "w Haskell? System.TimeIt module Znalazłem w Hackage nie jest wystarczająco ogólny, ponieważ działa tylko wtedy, gdy mierzone jest obliczenie IO. Tak więc timeIt(4 + 4)
nie zadziała, tylko timeIt(print $ 4 + 4)
, co szybko stanie się denerwujące. Poza tym, naprawdę chcę zobaczyć, jak Haskell radzi sobie z ogólnym przypadkiem.
Dziękujemy!
Wpis na wiki był dokładnie tym, czego potrzebowałem, dziękuję! – dimo414
Jeden +1 trafia do ciebie :) Kolejne +1 trafia do bloga Bryana O'Sullivana :) – CoR