2014-10-01 57 views

回答

7

最简单的工具是使用Erlang的:timer模块,其中一个是tc变体。它以微秒为单位返回执行时间,并将函数的结果作为元组返回。到时候匿名函数,你可以做

{time, res} = :timer.tc fn -> :timer.sleep(1000) end 
# {1000575, :ok} 

{time, res} = :timer.tc(fn(ms) -> :timer.sleep(ms) end, [1000]) 
# {1001283, :ok} 

时间模块的功能,你可以做

defmodule Sleepy do 
    def sleep(ms) do 
    :timer.sleep(ms) 
    end 
end 

{time, res} = :timer.tc(&Sleepy.sleep/1, [1000]) 
# {1001106, :ok} 

{time, res} = :timer.tc(Sleepy, :sleep, [1000]) 
# {1000352, :ok} 

Timex是另一种选择,这对于测量时间,除其他事项外一个友好的API,但如果所有你需要的是时间,:timer绰绰有余的一些包装代码。

相关问题