Performance 在Haskell中,使用在函数执行开始和结束时获得的时间戳来衡量性能是否正确?

Performance 在Haskell中,使用在函数执行开始和结束时获得的时间戳来衡量性能是否正确?,performance,haskell,Performance,Haskell,我想测量Haskell函数的性能。此函数是并行执行的 使用getCurrentTime函数返回的时间戳来衡量其性能是否正确?懒散会影响测量吗 我想把这些时间保存在日志上。我已经查看了一些日志库,但是它们返回的时间不如getCurrentTime返回的时间戳精确。我在我的日志上使用格式 我使用的代码是这样的:(我没有编译它) 导入数据.Time.Clock 测量函数::Int->IO(Int,UTCTime,UTCTime) 被测函数x=do 时间取决于函数。一些值可以立即获得所有信息,而另一些值

我想测量Haskell函数的性能。此函数是并行执行的

使用
getCurrentTime
函数返回的时间戳来衡量其性能是否正确?懒散会影响测量吗

我想把这些时间保存在日志上。我已经查看了一些日志库,但是它们返回的时间不如
getCurrentTime
返回的时间戳精确。我在我的日志上使用格式

我使用的代码是这样的:(我没有编译它)

导入数据.Time.Clock
测量函数::Int->IO(Int,UTCTime,UTCTime)
被测函数x=do

时间取决于函数。一些值可以立即获得所有信息,而另一些值可以在“顶层”之外进行昂贵的操作。下面是一个人为的例子:

example :: (Int, Int)
example = (1+1, head [ x | x <- [1..], x == 10^6 ])
示例::(Int,Int)

示例=(1+1,头部)[x | x您的回答对我有帮助,但我认为我不能使用
标准
,因为我要度量的函数是一个子例程函数。前面的函数必须在我要度量的函数之前调用。我不能直接调用该函数,因为
标准
教程调用了
fib
。@andregps标准库包括以下设施:。
example :: (Int, Int)
example = (1+1, head [ x | x <- [1..], x == 10^6 ])