如何将@time 的输出存储到变量中?

mat*_*sbe 8 julia

是否可以将显示的时间存储@time在变量中?

例如下面的代码

for i in 1:10
    @time my_function(i)
end
Run Code Online (Sandbox Code Playgroud)

显示我的函数的墙时间my_function,但我想将毫秒数存储在一个数组中,以便将其显示在一个图中,显示关于参数的执行时间的演变i

Bog*_*ski 10

最简单的是使用@elapsed,例如:

julia> [@elapsed rand(5^i) for i in 1:10]
10-element Vector{Float64}:
 3.96e-6
 4.64e-7
 7.55e-7
 3.909e-6
 4.43e-6
 1.5367e-5
 7.0791e-5
 0.000402877
 0.001831287
 0.071062595
Run Code Online (Sandbox Code Playgroud)

如果您使用 BenchmarkTools.jl,那么那里还有一个@belapsed宏,用于比@elapsed.

编辑:

  • @time:在返回表达式的值之前,打印执行时间、分配次数以及执行导致分配的总字节数。任何花费在垃圾收集 (gc) 或编译上的时间都显示为百分比。
  • @elapsed:丢弃结果值,而是以浮点数的形式返回执行所需的秒数