_magic functionsR/string_magic_main.R
timer_magic.RdSets up a timer which can later be summoned by string_magic() functions via
the .timer, .timer_lap and .timer_total variables. Useful to report
timings within functions with the function cat_magic() or message_magic().
timer_magic()This function does not return anything and is only intended to be used in
conjunction with future calls of string_magic().
This functions sets up a timer with base::Sys.time(). This timer can then be tracked
and modified with the .timer, .timer_lap and .timer_total variables within
cat_magic() or message_magic().
Note that the timer is precise at +/- 1ms, hence it should not be used to time algorithms with very short execution times.
It works by saving the current system time in R options (stringmagic_timer and stringmagic_timer_origin).
Hence, since it uses options, it should not be used in parallel processes.
Other tools with aliases:
string_clean_alias(),
string_magic(),
string_magic_alias(),
string_ops_alias(),
string_vec_alias()
# simple example where we time the execution of some elements in a function
# we trigger the message conditionally on the value of the argument `debug`.
rnorm_crossprod = function(n, mean = 0, sd = 1, debug = FALSE){
# we set the timer
timer_magic()
# we compute some stuff
x = rnorm(n, mean, sd)
# we can report the time with .timer
message_magic("{15 align ! Generation}: {.timer}", .trigger = debug)
res = x %*% x
message_magic("{15 align ! Product}: {.timer}",
"{15 align ! Total}: {.timer_total}",
.sep = "\n", .trigger = debug)
res
}
rnorm_crossprod(1e5, TRUE)
#> [,1]
#> [1,] 200202.7