press() is used to run mark() across a grid of parameters and then press the results together.

The parameters you want to set are given as named arguments and a grid of all possible combinations is automatically created.

The code to setup and benchmark is given by one unnamed expression (often delimited by \{).

If replicates are desired a dummy variable can be used, e.g. rep = 1:5 for replicates.

press(..., .grid = NULL, .quiet = FALSE)

Arguments

...

If named, parameters to define, if unnamed the expression to run. Only one unnamed expression is permitted.

.grid

A pre-built grid of values to use, typically a data.frame() or tibble::tibble(). This is useful if you only want to benchmark a subset of all possible combinations.

.quiet

If TRUE, progress messages will not be emitted.

Examples

# Helper function to create a simple data.frame of the specified dimensions
create_df <- function(rows, cols) {
  as.data.frame(setNames(
    replicate(cols, runif(rows, 1, 1000), simplify = FALSE),
    rep_len(c("x", letters), cols)))
}

# Run 4 data sizes across 3 samples with 2 replicates (24 total benchmarks)
press(
  rows = c(1000, 10000),
  cols = c(10, 100),
  rep = 1:2,
  {
    dat <- create_df(rows, cols)
    bench::mark(
      min_time = .05,
      bracket = dat[dat$x > 500, ],
      which = dat[which(dat$x > 500), ],
      subset = subset(dat, x > 500)
    )
  }
)
#> Running with:
#>    rows  cols   rep
#> 1  1000    10     1
#> 2 10000    10     1
#> 3  1000   100     1
#> 4 10000   100     1
#> 5  1000    10     2
#> 6 10000    10     2
#> 7  1000   100     2
#> 8 10000   100     2
#> # A tibble: 24 × 16
#>    expression  rows  cols   rep      min   median `itr/sec` mem_alloc `gc/sec`
#>    <bch:expr> <dbl> <dbl> <int> <bch:tm> <bch:tm>     <dbl> <bch:byt>    <dbl>
#>  1 bracket     1000    10     1   69.9µs  84.47µs    10736.  112.85KB      0  
#>  2 which       1000    10     1  60.92µs   70.1µs    12753.   53.95KB     34.3
#>  3 subset      1000    10     1  89.58µs 144.66µs     7448.  124.71KB     26.4
#>  4 bracket    10000    10     1 545.33µs 761.87µs     1334.    1.14MB     29.0
#>  5 which      10000    10     1 262.04µs 308.76µs     2919.  575.54KB     29.5
#>  6 subset     10000    10     1 636.99µs 789.35µs     1187.    1.25MB     27.0
#>  7 bracket     1000   100     1 602.99µs 694.62µs     1358.  989.32KB     30.2
#>  8 which       1000   100     1 519.41µs 617.86µs     1571.  399.48KB     25.8
#>  9 subset      1000   100     1 650.06µs 714.85µs     1346. 1010.54KB     25.4
#> 10 bracket    10000   100     1   4.81ms   5.32ms      189.    9.71MB     75.7
#> # ℹ 14 more rows
#> # ℹ 7 more variables: n_itr <int>, n_gc <dbl>, total_time <bch:tm>,
#> #   result <list>, memory <list>, time <list>, gc <list>