R函数与编译的C代码缓慢

时间:2014-05-08 13:07:28

标签: r performance agrep

R中的agrep函数基于C代码并且如此执行。 但是,我注意到,与对agrep命令行可执行文件的直接系统调用相比,在R内执行agrep之间存在显着的(数量级)性能差距。 (到目前为止仅在Linux上测试过)

我的代码的本质是这个(x是250K字符串的向量,xNoisy是x中1000个随机采样字符串的向量,由几个随机字符修改):

system.time( sapply(xNoisy, FUN = agrep,  x=x,max.distance = 2))
system.time(for (p in xNoisy) tmp=system(paste0("agrep -2 ", p, " strings.txt"),intern=TRUE) )

(这里strings.txt是包含x中字符串的文件。) 第一行需要700秒,第二行需要10秒(!)秒。 为什么这样,有没有办法更接近R?中的Linux agrep的性能?

0 个答案:

没有答案