Here is a minimal working example to illustrate what I am trying to ask:
function test(n::Int) tic() i = 0 while (i <= n) A = randn(100,100) B = randn(100,100) C = A*B i+=1 end toc() end test(100)
I always time my functions by putting
@time in front of the function call (like
@time test(100)). However, I realized that if I put
toc() inside the function definition, then the timing result could be quite different.
For the example above, I get
elapsed time: 0.033487528 seconds. However, if I remove the
toc() and use
tic() test(100) toc()
then I get
elapsed time: 0.047568188 seconds. (In both case, the code is run at least twice to avoid the compilation time.)
I don’t really understand what influences the gap between the two ways of timing. I am asking this because in my actual project, I encounter a timing difference of about 0.66 second and 0.015 second, which is quite significant! What are the common reasons for making this gap large? Thanks!