The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Why pipetime?

library(pipetime)
library(dplyr)

R pipelines (|>) allow chaining operations in a readable, sequential way. Existing timing tools (e.g. system.time(), tictoc) do not integrate naturally with pipelines and tidy workflows. pipetime solves this by letting you measure time inline, without interrupting the pipeline.

Examples

slow_op <- function(x) {
  Sys.sleep(0.1)  # Simulate a time-consuming operation
  x^2
}

system.time()

# Must wrap the entire pipeline, breaking the flow
the_time <- system.time({
  df <- data.frame(x = 1:3) |>
    mutate(y = slow_op(x)) |>
    summarise(mean_y = mean(y))
})
the_time
#>    user  system elapsed 
#>   0.002   0.000   0.107
df
#>     mean_y
#> 1 4.666667

# system.time() cannot be inserted inline in a pipeline:
data.frame(x = 1:3) |>
  mutate(y = slow_op(x)) |>
  # system.time() would break the pipeline here
  summarise(mean_y = mean(y))
#>     mean_y
#> 1 4.666667

tictoc

library(tictoc)

# Requires manual start/stop
tic("total pipeline")
df <- data.frame(x = 1:3) |>
  mutate(y = slow_op(x)) |>
  summarise(mean_y = mean(y))
toc()
#> total pipeline: 0.109 sec elapsed
df
#>     mean_y
#> 1 4.666667

time_pipe

# Inline timing checkpoints, pipeline stays intact
data.frame(x = 1:3) |>
  mutate(y = slow_op(x)) |>
  time_pipe("after mutate") |>
  summarise(mean_y = mean(y)) |>
  time_pipe("total pipeline")
#>     mean_y
#> 1 4.666667

Why pipetime?

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.