2016-04-22 27 views
2

以下のコードでは<bytecode: 0x02b59ae4>は何を意味していますか?Rのビルトイン関数定義の意味<bytecode: #>の意味

> 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関数はバイトコンパイルされます。バイトコンパイルされた関数は、コンパイルされていないバージョンよりもほとんど常に高速です。

パッケージのDESCRIPTIONファイルに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を設定することができます。これは、ソースからパッケージをインストールすることを前提としています。