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>