Microbenchmarking base R和三个字符串模式替换包

时间:2014-07-20 01:56:17

标签: regex r benchmarking

我的问题是我的方法和结论是否正确。

作为我学习正则表达式的一部分,我想弄清楚以哪种顺序学习各种替代方案(基础R和包)。我认为学习替代功能的相对速度可能会有所帮助。所以,我创建了一个字符串向量,并调用了我希望的等价表达式。

sites <- c("http://grand.test.com/", "https://example.com/",  
           "http://.big.time.bhfs.com/", "http://test.blogs.mvalaw.com/")
vec <- rep(x = sites, times = 1000) # creating a longish vector

base <- gsub("http:", "", vec, perl = TRUE)
stringr <- str_replace_all(vec, "http:", replacement = "")
stringi <- stri_replace_all_regex(str = vec, pattern = "http:", replacement = "")
qdap <- genX(text.var = vec, "http:", "")

然后我使用microbenchmarking包对这四种方法进行了基准测试。

test <- microbenchmark(base <- gsub("http:", "", vec, perl = TRUE),
                      stringr <- str_replace_all(vec, "http:", replacement = ""),
                      stringi <- stri_replace_all_regex(str = vec, pattern = "http:", replacement = ""),
                      qdap <- genX(text.var = vec, "http:", ""),
                      times = 100)

我是否更正基数R gsub是迄今为止最快的(我缩短了expr名称)?

 expr        min         lq
 base    1.697001   1.739393
 stringr 3.814348   3.928360
 stringi 5.888857   6.172212
 qdap 120.670037 124.624946
     median         uq        max neval
   1.765051   1.833770   2.976780   100
   3.979453   4.123138   7.032091   100
   6.276407   6.500412   7.634943   100
 127.493293 130.923663 173.155253   100

中位数时间非常不同,尤其是qdap

0 个答案:

没有答案