Why pipetime?

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
# Suppress vignette title mismatch warning
options(rmarkdown.html_vignette.check_title = FALSE)
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
df

# 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))

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()
df

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")

Why pipetime?



Try the pipetime package in your browser

Any scripts or data that you put into this service are public.

pipetime documentation built on Nov. 5, 2025, 5:40 p.m.