splot.bench {splot} | R Documentation |
splot benchmarker
Description
Time one or more expressions over several iteration, then plot the distributions of their times.
Usage
splot.bench(..., runs = 20, runsize = 200, cleanup = FALSE,
print.names = FALSE, limit.outliers = TRUE, check_output = TRUE,
check_args = list(), options = list())
Arguments
... |
accepts any number of expressions to be timed. See examples. |
runs |
the number of overall iterations. Increase to stabilize estimates. |
runsize |
the number of times each expression is evaluated within each run. Increase to differentiate estimates (particularly for very fast operations). |
cleanup |
logical; if |
print.names |
logical; if |
limit.outliers |
logical; if |
check_output |
logical; if |
check_args |
a list of arguments to be passed to |
options |
a list of options to pass on to splot. |
Value
A list:
plot | splot output |
checks | a list of result from all.equal, if check_output was TRUE |
expressions | a list of the entered expressions |
summary | a matrix of the printed results |
Examples
# increase the number of runs for more stable estimates
# compare ways of looping through a vector
splot.bench(
sapply(1:100, "*", 10),
mapply("*", 1:100, 10),
vapply(1:100, "*", 0, 10),
unlist(lapply(1:100, "*", 10)),
runs = 20, runsize = 200
)
# compare ways of setting all but the maximum value of each row in a matrix to 0
mat <- matrix(c(rep(1, 4), rep(0, 8)), 4, 3)
splot.bench(
t(vapply(seq_len(4), function(r) {
mat[r, mat[r, ] < max(mat[r, ])] <- 0
mat[r, ]
}, numeric(ncol(mat)))),
do.call(rbind, lapply(seq_len(4), function(r) {
mat[r, mat[r, ] < max(mat[r, ])] <- 0
mat[r, ]
})),
do.call(rbind, lapply(seq_len(4), function(r) {
nr <- mat[r, ]
nr[nr < max(nr)] <- 0
nr
})),
{
nm <- mat
for (r in seq_len(4)) {
nr <- nm[r, ]
nm[r, nr < max(nr)] <- 0
}
nm
},
{
nm <- mat
for (r in seq_len(4)) nm[r, nm[r, ] < max(nm[r, ])] <- 0
nm
},
{
nm <- matrix(0, dim(mat)[1], dim(mat)[2])
for (r in seq_len(4)) {
m <- which.max(mat[r, ])
nm[r, m] <- mat[r, m]
}
nm
},
{
ck <- do.call(rbind, lapply(seq_len(4), function(r) {
nr <- mat[r, ]
nr < max(nr)
}))
nm <- mat
nm[ck] <- 0
nm
},
t(apply(mat, 1, function(r) {
r[r < max(r)] <- 0
r
})),
runs = 50,
runsize = 200
)