Learn R Programming

hmstimer

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 <- tmr_timer(start = TRUE)
Sys.sleep(0.1)
str(tmr)
#>  'hms' num 00:00:00
#>  - attr(*, "units")= chr "secs"
#>  - attr(*, "title")= chr ""
#>  - attr(*, "start")= num 1.72e+09
hms::as_hms(tmr)
#> 00:00:00

Get the elapsed time with tmr_elapsed(). The title is optional.

tmr <- tmr_timer(start = TRUE, title = "my timer")

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 <- tmr_stop(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 <- tmr_start(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 <- tmr_stop(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 <- tmr_start(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

Installation

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::pak("poissonconsulting/hmstimer")

Contribution

Please report any issues.

Pull requests are always welcome.

Code of Conduct

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.

Copy Link

Version

Install

install.packages('hmstimer')

Monthly Downloads

214

Version

0.3.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Joe Thorley

Last Published

August 19th, 2024

Functions in hmstimer (0.3.0)

tmr_stop

Stop hms Timer
tmr_print

Print hms Timer
hmstimer-package

hmstimer: 'hms' Based Timer
hms_timer

hms Timer
tmr_ceiling

Ceiling hms Timer
tmr_is_started

Is hms Timer Started
tmr_elapsed

Elapsed Time hms Timer
tmr_is_stopped

Is hms Timer Stopped
tmr_format

Format hms Timer
local_timer

Local Timer
tmr_floor

Floor hms Timer
tmr_timer

Create hms Timer
tmr_is_titled

Is hms Timer Title
tmr_round

Round hms Timer
tmr_reset

Reset hms Timer
tmr_start

Start hms Timer
params

Parameter Descriptions
tmr_title

Get Title hms Timer
with_timer

With Timer
tmr_title<-

Set Title hms Timer