【发布时间】:2015-04-19 21:08:08
【问题描述】:
考虑R中的以下代码
####### CODE 1 #######
test = FALSE # or TRUE
for (i in 1:10^5){
if (test){
DoThat(i)
} else {
DoThis(i)
}
}
如果 R 编译器很好,我希望 if 语句的条件不会在每次迭代时都被评估。 Code 1 将等同于
####### CODE 2 #######
test = FALSE # or TRUE
if (test){
for (i in 1:10^5){
DoThat(i)
}
} else {
for (i in 1:10^5){
DoThis(i)
}
}
Code 1 更容易阅读,但如果编译不好会比code 2 慢
编译后这两个代码是否等效(就计算时间而言)?我是否应该确保将我的代码包含在一个函数中(最终是一个名为 main 的函数)以确保编译得到很好的优化?
仅供参考:我的 R 版本是 R 3.1.2 GUI 1.65 Mavericks build (6833)
【问题讨论】:
-
R 不是编译语言;它被解释了。
标签: r performance optimization compilation compiler-optimization