【发布时间】:2014-06-26 09:41:33
【问题描述】:
许多科学计算语言都区分绝对时间(挂钟)和 CPU 时间(处理器周期)。例如,在 Matlab 中我们有:
>> tic; pause(1); toc
Elapsed time is 1.009068 seconds.
>> start = cputime; pause(1); elapsed = cputime - start
elapsed =
0
在 Mathematica 中我们有:
>>In[1]:= AbsoluteTiming[Pause[1]]
>>Out[1]= {1.0010572, Null}
>>In[2]:= Timing[Pause[1]]
>>Out[2]= {0., Null}
当在计算服务器上运行基准测试代码时,这种区别很有用,其中绝对计时结果可能存在很大差异,具体取决于同时运行的其他进程。
Julia 标准库通过tic()、toc()、@time 和一些其他函数/宏都支持表达式计时,这些函数/宏都基于time_ns(),这是一个测量绝对时间的函数。
>>julia> @time sleep(1)
elapsed time: 1.017056895 seconds (135788 bytes allocated)
我的问题:有没有一种简单的方法可以在 Julia 中获取表达式评估所用的 CPU 时间?
(旁注:进行一些挖掘,看来 Julia 计时是基于 libuv 中的 uv_hrtime() 函数。在我看来,使用同一库中的 uv_getrusage 可能会提供一种访问已用 CPU 的方法有时间在 Julia,但我不是专家。有没有人尝试过使用这样的东西?)
【问题讨论】:
-
这是一个很好的建议。请提交问题或通过电子邮件发送邮件列表(如果您有工作,请发送拉取请求!)
标签: performance time julia cpu-time