我只是做了一些基准测试,而试图优化一些代码,并指出,strsplit与perl=TRUE是快比跑步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
Run Code Online (Sandbox Code Playgroud)
所以我的问题(或者更确切地说是标题中的问题的变体)是,在什么情况下绝对需要perl=FALSE(省略fixed和useBytes参数)?换句话说,我们不能用perl=TRUE它做什么可以通过设置来完成perl=FALSE?
来自文档;)
性能考虑
如果您正在进行大量正则表达式匹配,包括非常长的字符串,您将需要考虑使用的选项。一般来说,PCRE 会比默认的正则表达式引擎更快,并且fixed = TRUE 仍然更快(特别是当每个模式仅匹配几次时)。
当然,这并不能回答“一直使用有没有危险perl=TRUE”的问题。
| 归档时间: |
|
| 查看次数: |
464 次 |
| 最近记录: |