首页 > 解决方案 > 如何将@time 的输出存储到变量中?

问题描述

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

例如下面的代码

for i in 1:10
    @time my_function(i)
end

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

标签: julia

解决方案


最简单的是使用@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

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

编辑:

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

推荐阅读