如何在Haskell中获取程序的运行时间

10 time profiling haskell measurement execution

如何在Haskell中通过系统时间函数获取程序的运行时间?我想测量整个程序和/或单个函数的执行时间.

Tho*_*son 21

1)如果要对某些内容进行基准测试,请使用标准包.

2)如果你想时间的函数及正你已经控制了需要懒惰,那么就使用Data.Time.getCurrentTime时间包:

import Data.Time
...
   start <- getCurrentTime
   runOperation
   stop <- getCurrentTime
   print $ diffUTCTime stop start
Run Code Online (Sandbox Code Playgroud)

可以在timeit包中找到上述图案的光滑包装.

3)如果您确实想要恰好在Haskell中编写的程序的运行时间,那么请使用您的系统time实用程序.对于大多数POSIX系统(Mac,Linux),只需运行:

$ time ./SomeProgram
Run Code Online (Sandbox Code Playgroud)

它将报告用户,墙壁和系统时间.


Don*_*art 11

假设您不只是想测量程序的总运行时间,如下所示:

 $ time ./A
Run Code Online (Sandbox Code Playgroud)

然后你可以在Haskell中计算多种方法:

对于更统计的声音测量,请考虑

最后,在所有情况下,您需要考虑延迟评估:您是否想要衡量完全评估您生成的数据的成本,还是仅仅考虑其最外层的构造函数?


Zan*_* XY 6

:set +s如果使用 ghci 真的很整洁,否则您可以使用Criterion.Measurement,请参阅我对另一个问题的回答示例