2016-04-22 35 views
2

下面代码中的<bytecode: 0x02b59ae4>是什么意思?<bytecode: #>在R的内置函数定义中的含义

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

它对任何事情都有用吗?

+3

这只是位码的内存地址。 – nrussell

+0

好的,所以对任何事情都有用? – Qbik

回答

4

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

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

您可以编译自己的函数,如果你想:

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

或者,你可以在你.Renviron,这将字节编译包上安装设置R_COMPILE_PKGS=3。这假定您正在从源安装软件包。

相关问题