Summarize bench::mark results.

# S3 method for bench_mark
summary(object, filter_gc = TRUE,
  relative = FALSE, ...)

Arguments

object

bench_mark object to summarize.

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.

...

Additional arguments ignored.

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.

Details

If filter_gc == TRUE (the default) runs that contain a garbage collection will be removed before summarizing. This is most useful for fast expressions when the majority of runs do not contain a gc. Call summary(filter_gc = FALSE) if you would like to compute summaries with these times, such as expressions with lots of allocations when all or most runs contain a gc.

Examples

dat <- data.frame(x = runif(10000, 1, 1000), y=runif(10000, 1, 1000)) # `bench::mark()` implicitly calls summary() automatically results <- bench::mark( dat[dat$x > 500, ], dat[which(dat$x > 500), ], subset(dat, x > 500)) # However you can also do so explicitly to filter gc differently. summary(results, filter_gc = FALSE)
#> # A tibble: 3 x 13 #> expression min median `itr/sec` mem_alloc `gc/sec` n_itr #> <bch:expr> <bch> <bch:> <dbl> <bch:byt> <dbl> <int> #> 1 dat[dat$x > 500, ] 444µs 462µs 1857. 375KB 30.0 929 #> 2 dat[which(dat$x > 500), ] 369µs 385µs 2236. 258KB 28.0 1118 #> 3 subset(dat, x > 500) 560µs 576µs 1496. 493KB 32.0 748 #> # … with 6 more variables: n_gc <dbl>, total_time <bch:tm>, result <list>, #> # memory <list>, time <list>, gc <list>
# Or output relative times summary(results, relative = TRUE)
#> # A tibble: 3 x 13 #> expression min median `itr/sec` mem_alloc `gc/sec` n_itr #> <bch:expr> <dbl> <dbl> <dbl> <dbl> <dbl> <int> #> 1 dat[dat$x > 500, ] 1.20 1.20 1.24 1.45 1.07 914 #> 2 dat[which(dat$x > 500), ] 1 1 1.49 1 1 1104 #> 3 subset(dat, x > 500) 1.52 1.50 1 1.91 1.15 732 #> # … with 6 more variables: n_gc <dbl>, total_time <bch:tm>, result <list>, #> # memory <list>, time <list>, gc <list>