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)If named, parameters to define, if unnamed the expression to run. Only one unnamed expression is permitted.
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.
If TRUE, progress messages will not be emitted.
# 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>