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, 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.
`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 runs.

### 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.2 Index]