random_string <- function () {
paste (sample (letters, 50 , replace = TRUE ), collapse = "" )
}
strings10 <- replicate (10 , random_string ())
strings100 <- replicate (100 , random_string ())
collapse <- function (xs) {
out <- ""
for (x in xs) {
out <- paste0 (out, x)
}
out
}
bench:: mark (
loop10 = collapse (strings10),
loop100 = collapse (strings100),
vec10 = paste (strings10, collapse = "" ),
vec100 = paste (strings100, collapse = "" ),
check = FALSE
)[c ("expression" , "min" , "median" , "itr/sec" , "n_gc" )]
#> # A tibble: 4 × 4
#> expression min median `itr/sec`
#> <bch:expr> <bch:tm> <bch:tm> <dbl>
#> 1 loop10 20.34µs 21.35µs 46005.
#> 2 loop100 525.33µs 534.51µs 1855.
#> 3 vec10 3.63µs 3.79µs 261652.
#> 4 vec100 22.53µs 22.79µs 43578.