library(tinycodet)
#> Run `?tinycodet::tinycodet` to open the introduction help page of 'tinycodet'.
loadNamespace("bench")
#> <environment: namespace:bench>
loadNamespace("ggplot2")
#> <environment: namespace:ggplot2>
Introduction
Some effort has been made to ensure the functions in ‘tinycodet’ are
well optimized. The string related functions, for example, are about in
the same order of magnitude in terms of speed as the
stringi
functions they call.
Here some speed comparisons are given, using the ‘bench’ package.
stri_locate_ith
stri_locate_ith()
has about the same performance as
stri_locate_all()
:
n <- 5e4
x <- rep(paste0(1:50, collapse = ""), n)
p <- "\\d"
i <- sample(c(-50:-1, 1:50), replace=TRUE, size = n)
bm.stri_locate_ith_vs_all <- bench::mark(
"stri_locate_ith" = stri_locate_ith_regex(x, p, i),
"stringi::stri_locate_all" = stringi::stri_locate_all(x, regex = p),
min_iterations = 500,
check = FALSE,
filter_gc = FALSE
)
ggplot2::autoplot(bm.stri_locate_ith_vs_all)
#> Loading required namespace: tidyr
strcut
n <- 1e5
x <- rep("hello", n)
i <- sample(1:3, n, replace = TRUE)
loc <- stri_locate_ith(x, i=i, regex="a|e|i|o|u")
bm.strcut <- bench::mark(
"strcut_loc" = { strcut_loc(x, loc) },
"strcut_brk" = { strcut_brk(x, type = "", tolist = TRUE) },
"stringi::stri_split_boundaries" = {
stringi::stri_split_boundaries(x, type="character")
},
min_iterations = 500,
check = FALSE,
filter_gc = FALSE
)
ggplot2::autoplot(bm.strcut)
Row/columns-wise re-ordering
tempfun <- function(x, margin) {
if(margin == 1) {
for(i in 1:nrow(x)) x[i,] <- sort(x[i,])
return(x)
}
if(margin == 2) {
for(i in 1:ncol(x)) x[,i] <- sort(x[,i])
return(x)
}
}