我想在julia
中使用检索分配的字节数和用于我的函数的秒数。现在我可以分别得到每个号码,但我想做一些像
@elapsed, @allocated f(1)
为我的函数获取同一个调用的两个数字。
答案 0 :(得分:3)
为什么不使用@timed
?
julia> @timed(f(1))
(0.8414709848078965, 0.012771058, 76527, 0.0, Base.GC_Diff(76527, 0, 0, 1351, 0, 0, 0, 0, 0))
# the first three values are result, elapsed and allocated, so
julia> (x, elapsed, alloced) = @timed(f(1))[1:3]
(0.8414709848078965, 0.012771058, 76527)
答案 1 :(得分:0)
以下是使用@elapsed
和@allocated
的宏的一些快速修复:
macro timemem(ex)
return quote begin
local t,m
m = @allocated t = @elapsed $(esc(ex))
t,m-2*sizeof(Int)
end end
end
这不是最好的测试用例,但它给出了与Base中的宏相同的答案:
julia> @timemem sleep(1.0)
(1.002348175, 192)