我只是在尝试优化某些代码时进行了一些基准测试,并观察到strsplit
withperl=TRUE
比运行with更快。例如,strsplit
perl=FALSE
set.seed(1)
ff <- function() paste(sample(10), collapse= " ")
xx <- replicate(1e5, ff())
system.time(t1 <- strsplit(xx, "[ ]"))
# user system elapsed
# 1.246 0.002 1.268
system.time(t2 <- strsplit(xx, "[ ]", perl=TRUE))
# user system elapsed
# 0.389 0.001 0.392
identical(t1, t2)
# [1] TRUE
所以我的问题(或者更确切地说是标题中问题的变体)是,在什么情况下绝对需要perl=FALSE
(省略fixed
anduseBytes
参数)?换句话说,我们perl=TRUE
不能通过设置来做perl=FALSE
什么?