为什么括号会减慢我在R中的程序的速度

时间:2019-05-31 17:59:25

标签: r

我在朋友的代码中夹了一些多余的括号,这确实减慢了执行时间。如果对此有任何解释。请查看此示例代码

Python也是一种(准)解释语言,不受此程序的影响。

# 0.370 seconds
x <- 0
while (x < 100000) {
    10
    x = x + 1
}
# 0.743 seconds
x <- 0
while (x < 100000) {
    ((((((((((10))))))))))
    x = x + 1
}

1 个答案:

答案 0 :(得分:1)

尽管akrun's comment谈论R v2.11.1,但情况并没有真正改变。

?paren(括号和花括号)的帮助说,与某些其他语言不同,括号和花括号是R中的原始函数。这意味着无论何时您写a <- 1,1都只是一个1.但是,如果您编写a <- (1),则1在函数内部。

因此,即使您要运行简单的求值,括号也将花费更多时间(因为求值一个函数和一个数字)。

library(microbenchmark)

microbenchmark("simple" = {a <- 1},
                      "parentheses" = {
                        a <- (1)})

Unit: nanoseconds
        expr min  lq mean median  uq   max neval cld
      simple   0 100   89    100 100   700   100   a
 parentheses 100 100  310    200 200 16000   100   a

sessionInfo()

R version 3.5.3 (2019-03-11)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)