source()
在多个.R
文件中过度使用要使用的功能是否会带来性能折衷?
换句话说,.R
与在多个文件中散布的块相比,在单个文件中(即通常看起来不太漂亮)的代码运行速度明显快吗?
我认为您应该问这样的事情,与代码的清晰性相比,您获得了什么样的“收益”,但是仅仅是为了完整性……
在这里,我们以1source()
到long.r
3的来源获得10个fxns short1-3.r
。
# my long source file
fun1 <- function(x) x
fun2 <- function(x) x
fun3 <- function(x) x
fun4 <- function(x) x
fun5 <- function(x) x
fun6 <- function(x) x
fun7 <- function(x) x
fun8 <- function(x) x
fun9 <- function(x) x
fun10 <- function(x) x
# my shrt source file
fun1 <- function(x) x
fun2 <- function(x) x
fun3 <- function(x) x
fun4 <- function(x) x
fun5 <- function(x) x
fun6 <- function(x) x
fun7 <- function(x) x
fun8 <- function(x) x
fun9 <- function(x) x
fun10 <- function(x) x
require(microbenchmark)
src_long <- function(){
source("long.r")
}
src_shorts <- function(){
source("short1.r")
source("short2.r")
source("short3.r")
}
microbenchmark(src_long(),src_shorts())
在我的机器上,我得到:
Unit: microseconds
expr min lq median uq max neval
src_long() 691.690 733.271 763.3405 806.3555 3242.216 100
src_shorts() 1354.356 1431.011 1476.2555 1541.9445 3528.760 100
因此,当您有3次调用source()
而不是1次调用时,大约需要2倍的时间。大概是由于通过else/if
源本身中的语句添加了求值。700微秒是不容置疑的事情,因此应该遵从提供最清晰代码的内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句