3

我正在开发不同的离散化方案,为了找出最有效的方案,我想确定最大 RAM 消耗和执行特定任务所需的时间,例如求解方程组、覆盖矩阵或将数据写入文件。

有什么代码或东西可以做我需要的吗?顺便说一句,我在 Ubuntu 中使用 Julia,但我也可以在 Windows 中使用。

非常感谢

4

2 回答 2

1

我喜欢使用内置的@time这种东西。请参阅“使用@time 衡量性能并注意内存分配”。例子:

julia> @time myAwesomeFunction(tmp);
  1.293542 seconds (22.08 M allocations: 893.866 MiB, 6.62% gc time)

这会打印出时间、内存分配的数量、内存分配的大小以及垃圾收集所花费的时间百分比(“gc”)。始终至少运行两次——第一次运行将由编译时间决定!

还可以考虑BenchmarkTools.jl。这将使用一些很酷的变量插值技巧多次运行代码,并为您提供更好的运行时/内存估计:

julia> using BenchmarkTools, Compat

julia> @btime myAwesomeFunction($tmp);
  1.311 s (22080097 allocations: 893.87 MiB)

(我最喜欢的另一个与性能相关的东西是@code_*函数族,比如@code_warntype.)

于 2018-04-20T19:36:21.827 回答
0

我认为这是BenchmarkTools.jl衡量总内存使用量,而不是峰值。我还没有找到纯 Julia 代码来衡量这一点,但也许这个线程是相关的。

于 2020-11-10T23:24:25.397 回答