我在Ubuntu 14上使用R 3.0.2.我在代码中进行了一些繁重的计算,并尝试了"编译器"包
compilePKGS(enable=TRUE)
enableJIT(3)
Run Code Online (Sandbox Code Playgroud)
它似乎加快了我的代码.非常好!
但每次我的软件包启用"编译器"时,我都会收到很多笔记
Note: no visible binding for global variable '.Data'
Run Code Online (Sandbox Code Playgroud)
或类似于我自己的S4对象(代码中的"obj @ result"):
Note: no visible binding for global variable 'result'
Run Code Online (Sandbox Code Playgroud)
例如,它是自制S4对象的一部分.添加setCompilerOptions("suppressAll", TRUE)或setCompilerOptions("suppressUndefined", TRUE)没有帮助.当我完全停用编译器包时,根本不会弹出任何注释,所以这可能是我对compiler-package/jit的理解有问题?
我该怎么做来压制这些笔记?
编辑:
require(compiler)
compilePKGS(enable=TRUE)
enableJIT(3)
setClass(Class = "testobject",
slots = c( data = "numeric",
test = "character",
split = "numeric",
name = "character"
)
)
a <- new("testobject", data=c(1,2,3,4), test="TEST", split=5, name="NAME")
for(i in a@data){
print(i)
}
Run Code Online (Sandbox Code Playgroud)
简单的例子产生
Note: no visible binding for global variable '.Data'
Note: no visible binding for global variable '.Data'
Run Code Online (Sandbox Code Playgroud)
直接在ClassDefinition调用之后
您可以使用R来抑制这些音符
setCompilerOptions(suppressAll = TRUE)
没有必要单独抑制"未定义"选项,抑制"所有"将做.或者,您可以设置环境变量
export R_COMPILER_SUPPRESS_ALL=true
(或类似地在不同的操作系统下).
如果您只想抑制有关编译器未定义或似乎未定义的变量的警告,您可以这样做
setCompilerOptions(suppressUndefined=TRUE)
如果你只想做变量.Data,你可以这样做
setCompilerOptions(suppressUndefined=".Data").
另请注意,使用编译器加速代码时无需启用软件包编译,只需启用JIT即可.您可以在示例中从R执行此操作,也可以只设置另一个变量
export R_ENABLE_JIT=3
要启用最积极的优化,您还可以进行设置
export R_COMPILER_OPTIMIZE=3
或者来自R run setCompilerOptions(optimize=3)
通过环境变量启用JIT编译时,您不必显式加载编译器包 - 它将自动完成.
| 归档时间: |
|
| 查看次数: |
1324 次 |
| 最近记录: |