R脚本和库预加载?
我创建了一个R脚本,它需要先加载一些库 问题是脚本需要1.6秒才能完成计算(使用Linux命令“time”多次测量),而加载库只需要0.7秒 脚本经常运行,因此库加载的延迟几乎占实际工作负载的80% 有没有办法预先加载库,这样就不会在每次脚本运行时加载它们 有没有其他建议可以绕过这种缓慢R脚本和库预加载?,r,shell,preload,rscript,R,Shell,Preload,Rscript,我创建了一个R脚本,它需要先加载一些库 问题是脚本需要1.6秒才能完成计算(使用Linux命令“time”多次测量),而加载库只需要0.7秒 脚本经常运行,因此库加载的延迟几乎占实际工作负载的80% 有没有办法预先加载库,这样就不会在每次脚本运行时加载它们 有没有其他建议可以绕过这种缓慢 #!/usr/bin/Rscript library(methods, quietly=TRUE, warn.conflicts = FALSE) library(MASS, quietly=TRUE, wa
#!/usr/bin/Rscript
library(methods, quietly=TRUE, warn.conflicts = FALSE)
library(MASS, quietly=TRUE, warn.conflicts = FALSE)
library(RBGL, quietly=TRUE, warn.conflicts = FALSE)
library(igraph, quietly=TRUE, warn.conflicts = FALSE)
library(bnlearn, quietly=TRUE, warn.conflicts = FALSE)
library(gRbase, quietly=TRUE, warn.conflicts = FALSE)
library(gRain, quietly=TRUE, warn.conflicts = FALSE)
..
..
如果您将脚本转换成一个包(从长远来看,您应该这样做…),那么您可以使用
从您使用的包中导入所需的符号,这通常比所做的满载要快一点
所以关键是
使用软件包
了解命名空间
仅导入所需的符号
一种正交方法是不重新启动并节省时间——您可以将其用作驻留的R实例,只需使用R客户端连接到它。不过可能需要做更多的工作…持久化R实例听起来是更快的方法,特别是从长远来看。更糟糕的是,我想知道你是否可以A)使用包函数将函数写入环境中,B)限定名称空间,C)字节将函数编译到环境中,D)保存环境,然后在每次脚本运行时加载它?您可以将其附加到会话,使其与global?中的功能相同。谢谢您的回答。我会试试你的建议。我现在需要阅读更多关于NAMESPACE和RServe的内容,因为我以前对它们一无所知。Vangelis,我有一个类似的问题,您是否曾经使用RServe()作为常驻R实例并从R客户端连接到它?不,我还没有尝试过。该脚本是作为一篇硕士论文的原型概念证明而制作的,因此目前不需要进行速度改进。它被添加到我还没有花时间的“未来工作”部分。