← Back to all sparks
B

bench

INFRA · APIS
Velocity0.0

High precision timing and memory benchmarking of R expressions

bench has settled into slow, careful upkeep of R's benchmarking workhorse.

rbenchmarkingprofilingtidyversemaintenance
Current state
bench provides high-precision timing and memory profiling for R expressions, and is the measurement tool much of the tidyverse reaches for. Releases arrive roughly yearly and are dominated by small API corrections, CRAN compliance work, and keeping pace with tidyverse minimum-R requirements.
Where it's heading
The measurement surface has been effectively frozen since 1.1.0 added process-level memory tracking. Everything since trims rough edges — quieter progress output, consistent .grid handling, modern ggplot2 internals — rather than extending what the package can measure.
Prediction
Expect continued maintenance releases driven by CRAN checks and ggplot2 or tidyverse deprecations, not new measurement capabilities.

Recent moves

  1. 1y ago

    bench 1.1.4 quiets press() and raises the R floor to 4.0

    press() gains a .quiet argument and handles data.frame and tibble .grid inputs consistently, while time and byte scales apply pretty breaks correctly again. The R 4.0.0 floor and modern ggplot2 internals are the tidyverse-alignment tax this package now pays each cycle.

    View source ↗
  2. 3y ago

    bench 1.1.3 fixes tibble truncation and CRAN warnings

    Display fixes for long expressions in tibble columns and knitr paged output, plus CRAN-requested prototype warnings and a stray macOS code path on GNU Hurd. Housekeeping rather than user-facing change.

    View source ↗
  3. 4y ago

    bench 1.1.2 relicenses to MIT under a new maintainer

    A governance release as much as a technical one: Davis Vaughan takes over maintenance and the package is relicensed to MIT. Dropping unquote and splice support in mark() and workout() is a deliberate breaking change to stop misleading timings from functions like rlang::list2().

    View source ↗
  4. 6y ago

    bench 1.1.1 always includes memory columns in mark() output

    The memory, result and mem_alloc columns are now always present in mark() output even when unused. A consistency fix that mainly helps code consuming the result programmatically.

    View source ↗
  5. 6y ago

    bench 1.1.0 adds process-level memory tracking beyond the GC heap

    The last release to meaningfully widen what bench measures: bench_process_memory() reports current and peak memory for the whole process using system calls, reaching outside R's GC heap. workout_expressions() and a memory toggle on mark() round it out.

    View source ↗
  6. 6y ago

    bench 1.0.4 fixes examples on R without memory profiling

    Examples no longer fail on R builds without memory profiling, and bench_expr is reclassified as a list of calls rather than an expression object. Correctness detail with no change to normal use.

    View source ↗