R内置函数定义中<bytecode:#=“”>的含义

时间:2016-04-22 14:24:52

标签: r

以下代码中的<bytecode: 0x02b59ae4>是什么意思?

> nchar
function (x, type = "chars", allowNA = FALSE, keepNA = FALSE) 
.Internal(nchar(x, type, allowNA, keepNA))
<bytecode: 0x02b59ae4>
<environment: namespace:base>`

对任何事情都有用吗?

1 个答案:

答案 0 :(得分:5)

bytecode语句表示该函数已由compiler包进行字节编译。所有基本R函数都是字节编译的。字节编译的函数几乎总是比非编译版本快。

如果包的DESCRIPTION文件中包含ByteCompile: true,则包中的所有函数都将进行字节编译。

如果需要,您可以编译自己的功能:

f = function(x) x
f_cmp = compiler::cmpfun(f)
f
# function(x) x
f_cmp
# function(x) x
# <bytecode: 0x7f371a8>

或者,您可以在R_COMPILE_PKGS=3中设置.Renviron,并在安装时使用字节编译包。这假设您要从源代码安装软件包。