Type: Package
Title: Tools to Time Pipe Operations
Version: 0.0.1
Description: Enable users to measure and record the execution time of pipe operations (using |>) with optional logging to dataframes and output to the console.
License: MIT + file LICENSE
Encoding: UTF-8
Suggests: testthat (≥ 3.0.0), crayon, dplyr, ggplot2, stringr, tictoc, knitr, rmarkdown
Config/testthat/edition: 3
RoxygenNote: 7.3.3
URL: https://cygei.github.io/pipetime/; https://github.com/CyGei/pipetime
BugReports: https://github.com/CyGei/pipetime/issues
VignetteBuilder: knitr
NeedsCompilation: no
Packaged: 2025-09-29 19:13:44 UTC; cy
Author: Cyril Geismar ORCID iD [aut, cre, cph]
Maintainer: Cyril Geismar <c.geismar21@imperial.ac.uk>
Depends: R (≥ 4.1.0)
Repository: CRAN
Date/Publication: 2025-10-08 19:50:14 UTC

Retrieve a timing log (or all logs)

Description

Return a stored timing log from .pipetime_env. If log = NULL, return all logs as a named list.

Usage

get_log(log = NULL)

Arguments

log

Character string or NULL. Name of the log to retrieve. If NULL, all logs are returned.

Value

Either:

See Also

rm_log()


Remove a timing log (or all logs)

Description

Delete a timing log from .pipetime_env. If log = NULL, all logs are removed, but only when force = TRUE.

Usage

rm_log(log = NULL, force = FALSE)

Arguments

log

Character string or NULL. Name of the log to remove. If NULL, all logs are targeted.

force

Logical. To remove all logs, force must be TRUE. Default: FALSE.

Value

Invisibly, TRUE.

See Also

get_log()


Measure execution time in a pipeline

Description

Records the runtime of a pipeline (⁠|>⁠) from its start to the point where time_pipe() is called. Prints results to the console and/or logs them in .pipetime_env. Defaults can be set via ⁠options(pipetime.*)⁠.

Usage

time_pipe(
  .data,
  label = NULL,
  log = getOption("pipetime.log", NULL),
  console = getOption("pipetime.console", TRUE),
  unit = getOption("pipetime.unit", "secs")
)

Arguments

.data

Input object passed through the pipeline.

label

Character string. Operation name. Defaults to the expression if NULL.

log

Character string or NULL. Name of a log data frame in .pipetime_env. Default: NULL.

console

Logical. Print timing to console? Default: TRUE.

unit

Character string. Time unit for base::difftime(). One of "secs", "mins", "hours", "days", "weeks". Default: "secs".

Details

time_pipe() measures elapsed time from pipeline start to the call. If log is set, results are appended to a data frame in .pipetime_env with columns:

Stored logs can be retrieved with get_log().

Value

.data, unchanged. Timing information is printed and/or stored separately.

Examples

library(dplyr)
data.frame(x = 1:3) |>
mutate(y = {Sys.sleep(0.5); x*2 }) |>
time_pipe("calc 1") |>
mutate(z = {Sys.sleep(0.5); x/2 }) |>
time_pipe("total pipeline")