R: Benchmark a series of functions

mark {bench} | R Documentation

## Benchmark a series of functions

### Description

Benchmark a list of quoted expressions. Each expression will always run at least twice, once to measure the memory allocation and store results and one or more times to measure timing.

### Usage

    mark(..., min_time = 0.5, iterations = NULL, min_iterations = 1,
      max_iterations = 10000, check = TRUE, filter_gc = TRUE,
      relative = FALSE, time_unit = NULL, exprs = NULL,
      env = parent.frame())

### Arguments

`...` | Expressions to benchmark, if named the `expression` column will be the name, otherwise it will be the deparsed expression.
`min_time` | The minimum number of seconds to run each expression, set to `Inf` to always run `max_iterations` times instead.
`iterations` | If not `NULL`, the default, run each expression for exactly this number of iterations. This overrides both `min_iterations` and `max_iterations`.
`min_iterations` | Each expression will be evaluated a minimum of `min_iterations` times.
`max_iterations` | Each expression will be evaluated a maximum of `max_iterations` times.
`check` | Check if results are consistent. If `TRUE`, checking is done with `all.equal()`, if `FALSE` checking is disabled. If `check` is a function that function will be called with each pair of results to determine consistency.
`filter_gc` | If `TRUE` remove iterations that contained at least one garbage collection before summarizing. If `TRUE` but an expression had a garbage collection in every iteration, filtering is disabled, with a warning.
`relative` | If `TRUE` all summaries are computed relative to the minimum execution time rather than absolute time.
`time_unit` | If `NULL` the times are reported in a human readable fashion depending on each value. If one of 'ns', 'us', 'ms', 's', 'm', 'h', 'd', 'w' the time units are instead expressed as nanoseconds, microseconds, milliseconds, seconds, hours, minutes, days or weeks respectively.
`exprs` | A list of quoted expressions. If supplied overrides expressions defined in `...`.
`env` | The environment which to evaluate the expressions

### Value

A tibble with the additional summary columns. The following summary columns are computed

- `min` - `bench_time` The minimum execution time.

- `mean` - `bench_time` The arithmetic mean of execution time

- `median` - `bench_time` The sample median of execution time.

- `max` - `bench_time` The maximum execution time.

- `mem_alloc` - `bench_bytes` Total amount of memory allocated by running the expression.

- `itr/sec` - `integer` The estimated number of executions performed per second.

- `n_itr` - `integer` Total number of iterations after filtering garbage collections (if `filter_gc == TRUE`).

- `n_gc` - `integer` Total number of garbage collections performed over all iterations. This is a psudo-measure of the pressure on the garbage collector, if it varies greatly between to alternatives generally the one with fewer collections will cause fewer allocation in real usage.

### See Also

`press()` to run benchmarks across a grid of parameters.

### Examples

    dat <- data.frame(x = runif(100, 1, 1000), y=runif(10, 1, 1000))
    mark(
      min_time = .1,

      dat[dat$x > 500, ],
      dat[which(dat$x > 500), ],
      subset(dat, x > 500))

[Package bench version 1.0.4 Index]