Summarize bench::mark results.
# S3 method for bench_mark summary(object, filter_gc = TRUE, relative = FALSE, time_unit = NULL, ...)
| object | bench_mark object to summarize. |
|---|---|
| filter_gc | If |
| relative | If |
| time_unit | If |
| ... | Additional arguments ignored. |
A tibble with the additional summary columns. The following summary columns are computed
expression - bench_expr The deparsed expression that was evaluated
(or its name if one was provided).
min - bench_time The minimum execution time.
median - bench_time The sample median of execution time.
itr/sec - double The estimated number of executions performed per
second.
mem_alloc - bench_bytes Total amount of memory allocated by R while
running the expression. Memory allocated outside the R heap, e.g. by
malloc() or new directly is not tracked, take care to avoid
misinterpreting the results if running code that may do this.
gc/sec - double The number of garbage collections per second.
n_itr - integer Total number of iterations after filtering
garbage collections (if filter_gc == TRUE).
n_gc - double 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.
total_time - bench_time The total time to perform the benchmarks.
result - list A list column of the object(s) returned by the
evaluated expression(s).
memory - list A list column with results from Rprofmem().
time - list A list column of bench_time vectors for each evaluated
expression.
gc - list A list column with tibbles containing the level of
garbage collection (0-2, columns) for each iteration (rows).
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.
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, ] 394µs 405µs 2248. NA 18.0 1123 #> 2 dat[which(dat$x > 500), ] 310µs 319µs 2834. NA 16.0 1415 #> 3 subset(dat, x > 500) 522µs 535µs 1733. NA 14.0 866 #> # … with 6 more variables: n_gc <dbl>, total_time <bch:tm>, result <list>, #> # memory <list>, time <list>, gc <list>#> # 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.27 1.27 1.32 NA 1.31 1114 #> 2 dat[which(dat$x > 500), ] 1 1 1.67 NA 1.17 1407 #> 3 subset(dat, x > 500) 1.68 1.68 1 NA 1 859 #> # … with 6 more variables: n_gc <dbl>, total_time <bch:tm>, result <list>, #> # memory <list>, time <list>, gc <list>