2011-01-21 11 views
9

Rの関数の大きなライブラリを開発しました 現在のところ、すべてのスクリプトの先頭に関数をロード(ソース)しています。Rパッケージと実行時間

私はパッケージを作成できることを見ました。

私の質問は:私の機能の実行時間を改善しますか? (インタプリタコードを機械語に変換することによって)

パッケージ作成は何をしますか?バイナリを作成しますか?

おかげ フレッド

答えて

14

はまだ 大量にその実行時間を改善しませんあなたのRコードをパッケージRコンパイラはありません。バイナリを作成することもありません。パッケージtarballからビルドする必要があります(または、ビルドするにはCRANなどが必要です)。 R用のバイトコンパイラとRのパッケージがデフォルトでバイトコンパイルされました。スピードの向上は一般的に控えめです - Cのようなスピードは期待しないでください。

パッケージRコードはちょうどそのとおりです。 Rコード、コンパイルするコード(C Fortranなど)、マニュアルページ、ドキュメンテーション、テストなどを標準形式にパッケージ化して、ユーザーに配布し、複数のアーキテクチャでインストール/構築することができます。

パッケージは、Rオブジェクト(関数)が必要なときにのみ読み込まれるように、遅延ロードのようなものを利用できますが、ソースはそれらをすべてグローバル環境(デフォルト)にロードします。

あなたのコードを配布するつもりがない場合は、あなた自身のためだけにパッケージングの利点はほとんどありませんが、ドキュメントやサンプル/テストをパッケージ化して記述すると、パッケージコードの変更が警告されることがありますサンプルが壊れたり、テストが失敗する可能性があります。そうすれば、たとえそれを使用しているだけであっても、コードの信頼性に関する情報が得られるはずです。

+3

パッケージをビルドするのは楽しいですし、あなたの機能を文書化することも強く求められています。ドキュメンテーションはhelp()を使って簡単にアクセスできます。これは私がR-helpについて好きな主なものの1つです。 –

+5

パッケージは、Rコードを管理するための堅固なフレームワークを提供します。私は、機能のコレクションが1つまたは2つのソース化されたRファイルを超えて---個人的な使用状況であっても、常に有益であると感じました。 – Sharpie

+1

異なるOS用のパッケージを自動的にビルドするための[R-forge](https://r-forge.r-project.org/)をチェックしてください。 – csgillespie