2017-07-11 21 views

答えて

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 

これが最良のテストケースではありませんが、基地からマクロとして同じ答えを与える:

julia> @timemem sleep(1.0) 
(1.002348175, 192) 
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) 
関連する問題