hmstimer
is an R package to track elapsed clock time
using a hms::hms
scalar.
hmstimer
was originally developed to time Bayesian model
runs. It should not be used to estimate how long extremely fast code
takes to execute as the package code adds a small time cost.
Create and start a timer with
tmr_timer(start = TRUE)
.
library(hmstimer)
<- tmr_timer(start = TRUE)
tmr Sys.sleep(0.1)
str(tmr)
#> 'hms' num 00:00:00
#> - attr(*, "units")= chr "secs"
#> - attr(*, "title")= chr ""
#> - attr(*, "start")= num 1.72e+09
::as_hms(tmr)
hms#> 00:00:00
Get the elapsed time with tmr_elapsed()
. The title is
optional.
<- tmr_timer(start = TRUE, title = "my timer")
tmr
Sys.sleep(0.1)
tmr_elapsed(tmr)
#> 00:00:00.103417
Sys.sleep(0.1)
tmr_elapsed(tmr)
#> 00:00:00.212112
Stop the timer with tmr_stop()
.
<- tmr_stop(tmr)
tmr tmr_elapsed(tmr)
#> 00:00:00.216109
Sys.sleep(1)
tmr_elapsed(tmr)
#> 00:00:00.216109
Restart the timer with tmr_start()
.
<- tmr_start(tmr)
tmr tmr_elapsed(tmr)
#> 00:00:00.21697
Sys.sleep(0.1)
tmr_elapsed(tmr)
#> 00:00:00.324928
There are several options for printing and formatting including coercing to a hms object.
<- tmr_stop(tmr)
tmr print(tmr)
#> 00:00:00.333247
tmr_print(tmr)
#> [1] "00:00:00.333247 [my timer]"
tmr_format(tmr, digits = 5)
#> [1] "00:00:00.33325 [my timer]"
If running tmr_print()
behaves differently.
<- tmr_start(tmr)
tmr tmr_print(tmr)
#> [1] "14:44:58 (+00:00:01 => 14:44:59) [my timer]"
The time for a block of code to complete can be printed using
with_timer()
.
with_timer({
Sys.sleep(0.1)
Sys.sleep(0.1)
1 + 1
})#> 00:00:00.207
#> [1] 2
To install the latest release version from CRAN.
install.packages("hmstimer")
To install the latest development version from r-universe.
install.packages("hmstimer", repos = c("https://poissonconsulting.r-universe.dev", "https://cloud.r-project.org"))
To install the latest development version from GitHub
# install.packages("pak", repos = sprintf("https://r-lib.github.io/p/pak/stable/%s/%s/%s", .Platform$pkgType, R.Version()$os, R.Version()$arch))
::pak("poissonconsulting/hmstimer") pak
Please report any issues.
Pull requests are always welcome.
Please note that the hmstimer project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.