小编Jac*_*cob的帖子

在Haskell中编写时间函数

我是Haskell的新手,我希望能够计算给定函数调用或代码片段的运行时间.

在Clojure中我可以使用' 时间 ':

user=> (time (apply * (range 2 10000)))
"Elapsed time: 289.795 msecs"
2846259680917054518906413212119868890148051...
Run Code Online (Sandbox Code Playgroud)

在Scala中,我可以自己定义函数:

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...
Run Code Online (Sandbox Code Playgroud)

如何在Haskell中编写我的Scala函数或Clojure的'time'的等价物?我在Hackage上找到的System.TimeIt模块不够通用,因为它仅在测量IO计算时才有效.所以timeIt(4 …

time benchmarking haskell scala clojure

27
推荐指数
3
解决办法
4841
查看次数

标签 统计

benchmarking ×1

clojure ×1

haskell ×1

scala ×1

time ×1