2016-04-22 100 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。這假定您正在從源安裝軟件包。