我已經在R中開發了一個大函數庫。 目前我只是在所有腳本開始時加載(「源」)函數。R包和執行時間
我看到我可以創建包。
我的問題是:這會改善我的功能執行時間? (通過將解釋器代碼轉換爲機器語言?)
軟件包創建有什麼作用?它會創建二進制文件嗎?
感謝 弗雷德
我已經在R中開發了一個大函數庫。 目前我只是在所有腳本開始時加載(「源」)函數。R包和執行時間
我看到我可以創建包。
我的問題是:這會改善我的功能執行時間? (通過將解釋器代碼轉換爲機器語言?)
軟件包創建有什麼作用?它會創建二進制文件嗎?
感謝 弗雷德
沒有的R編譯器還
包裝你的R代碼裏面將沒有大量提高其執行時間。它也不會爲你創建二進制文件 - 你需要從軟件包壓縮包(或者獲取CRAN或類似文件爲你構建它們)來構建這些二進制文件。現在有一個字節編譯器用於R和R的包,現在默認字節編譯。速度的提高一般都不高 - 不要指望像C一樣的速度。
包裝R代碼只是做到了;它將R代碼,要編譯的代碼(C Fortran等),手冊頁,文檔,測試等打包成可分發給用戶並在多種體系結構上安裝/構建的標準格式。
軟件包可以利用延遲加載等功能,使R對象(您的函數說)只在需要時加載,而源代碼將它們全部加載到全局環境中(默認情況下)。
如果你不打算分發你的代碼,那麼封裝僅僅是爲了你自己的使用而帶來的好處,但是如果你打包並編寫文檔和例子/測試,可能會提醒你軟件包代碼的改變這會破壞示例或導致測試失敗。通過這種方式,您可以更好地瞭解代碼的可靠性,即使只有您使用它!
構建一個包很有趣,它會「強制」你記錄你的函數(如果你還沒有這樣做的話)。這些文檔很容易通過help()獲得,這是我喜歡關於R的主要內容之一 - 幫助永遠不會太遠或者模糊。 – 2011-01-21 12:40:29