Je ne connais pas encore Haskell et j'aimerais connaître le temps d'exécution d'un appel de fonction donné ou d'un extrait de code.Ecriture d'une fonction de temps dans Haskell
En Clojure je peux utiliser 'time ':
user=> (time (apply * (range 2 10000)))
"Elapsed time: 289.795 msecs"
2846259680917054518906413212119868890148051...
En Scala, je peux définir moi-même la fonction:
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...
Comment puis-je écrire l'équivalent de ma fonction Scala ou Clojure de' Heure à Haskell Le System.TimeIt module que j'ai trouvé sur Hackage n'est pas assez général car il ne fonctionne que si un calcul d'E/S est mesuré. Donc, timeIt(4 + 4)
ne fonctionnerait pas, seulement timeIt(print $ 4 + 4)
, ce qui devient vite ennuyeux. A côté, je veux vraiment voir comment Haskell gère le cas général.
Merci!
L'entrée wiki était exactement ce dont j'avais besoin, merci! – dimo414
Un +1 va vers vous :) Un autre +1 va sur le blog de Bryan O'Sullivan :) – CoR