私はjulia
の私の機能のために割り当てられたバイトと秒の両方を取得するのに使いたいと思います。今すぐ別々の番号を得ることができますが、私の関数で同じ呼び出しのために両方の番号を取得するには、juliaで同時に@elapsedと@allocatedの両方を浮動小数点として取り出す方法は?
@elapsed, @allocated f(1)
のようにしたいと思います。ここで
私はjulia
の私の機能のために割り当てられたバイトと秒の両方を取得するのに使いたいと思います。今すぐ別々の番号を得ることができますが、私の関数で同じ呼び出しのために両方の番号を取得するには、juliaで同時に@elapsedと@allocatedの両方を浮動小数点として取り出す方法は?
@elapsed, @allocated f(1)
のようにしたいと思います。ここで
は@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)
なぜ使用しない@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)