如何在julia中同时检索@elapsed和@allocated作为浮点数?

时间:2017-07-11 14:44:17

标签: profiling julia

我想在julia中使用检索分配的字节数和用于我的函数的秒数。现在我可以分别得到每个号码,但我想做一些像

这样的事情
@elapsed, @allocated f(1)

为我的函数获取同一个调用的两个数字。

2 个答案:

答案 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)