Hello everyone, I put up a new (unregistered) small package for timing different sections of code. It works similar to @time in Base but you also give the code section being timed a label. We can then track the total time and number of calls that are made to code sections with that label and pretty print it in the end. This feature existed in a C++ library I used to use (deal.II) and I missed it in Julia.
Here is a small example. using TimerOutputs const time_tracker = TimerOutput(); @timeit time_tracker "sleeping" sleep(1) @timeit time_tracker "loop" for i in 1:10 rand() sleep(0.1) end v = 0.0 for i in 1:5 v += @timeit time_tracker "in a loop" begin sleep(0.1) rand() end end print(time_tracker) +---------------------------------------------+------------+------------+ | Total wallclock time elapsed since start | 3.155 s | | | | | | | Section | no. calls | wall time | % of total | +---------------------------------------------+------------+------------+ | loop | 1 | 1.012 s | 32 % | | sleeping | 1 | 1.002 s | 32 % | | in a loop | 5 | 505.779 ms | 16 % | +---------------------------------------------+------------+------------+ Feel free to comment on the package name, macro name, format of the output etc. The URL is: https://github.com/KristofferC/TimerOutputs.jl Best regards, Kristoffer