2011-01-21 45 views
9

我已經在R中開發了一個大函數庫。 目前我只是在所有腳本開始時加載(「源」)函數。R包和執行時間

我看到我可以創建包。

我的問題是:這會改善我的功能執行時間? (通過將解釋器代碼轉換爲機器語言?)

軟件包創建有什麼作用?它會創建二進制文件嗎?

感謝 弗雷德

回答

14

沒有的R編譯器還 包裝你的R代碼裏面將沒有大量提高其執行時間。它也不會爲你創建二進制文件 - 你需要從軟件包壓縮包(或者獲取CRAN或類似文件爲你構建它們)來構建這些二進制文件。現在有一個字節編譯器用於R和R的包,現在默認字節編譯。速度的提高一般都不高 - 不要指望像C一樣的速度。

包裝R代碼只是做到了;它將R代碼,要編譯的代碼(C Fortran等),手冊頁,文檔,測試等打包成可分發給用戶並在多種體系結構上安裝/構建的標準格式。

軟件包可以利用延遲加載等功能,使R對象(您的函數說)只在需要時加載,而源代碼將它們全部加載到全局環境中(默認情況下)。

如果你不打算分發你的代碼,那麼封裝僅僅是爲了你自己的使用而帶來的好處,但是如果你打包並編寫文檔和例子/測試,可能會提醒你軟件包代碼的改變這會破壞示例或導致測試失敗。通過這種方式,您可以更好地瞭解代碼的可靠性,即使只有您使用它!

+3

構建一個包很有趣,它會「強制」你記錄你的函數(如果你還沒有這樣做的話)。這些文檔很容易通過help()獲得,這是我喜歡關於R的主要內容之一 - 幫助永遠不會太遠或者模糊。 – 2011-01-21 12:40:29