我在R中开发了一个大型函数库。
目前,我只是在所有脚本的开头加载(“源”)功能。
我已经看到我可以创建包。
我的问题是:这会改善我的函数的执行时间吗? (通过将解释器代码转换为机器语言?)
软件包创建有什么作用?它会创建二进制文件吗?
谢谢
弗雷德
最佳答案
还没有R编译器打包您的R代码不会大大提高其执行时间。它还不会为您创建二进制文件-您需要从tarball软件包中构建二进制文件(或获取CRAN或类似文件来为您构建它们)。现在有一个用于R的字节编译器,并且R的包现在默认情况下是字节编译的。速度改进通常比较适度-不要指望类似C的速度。
打包R代码就是这样做的。它将R代码,要编译的代码(C Fortran等),手册页,文档,测试等打包为标准格式,可以分发给用户并可以在多种体系结构上安装/构建。
包可以利用诸如延迟加载之类的优势,例如仅在需要时才加载R对象(例如,您的函数),而source则将它们全部加载到全局环境中(默认情况下)。
如果您不打算分发您的代码,则打包仅供您自己使用的好处不多,但是如果打包并编写文档和示例/测试,则可能会收到有关破坏示例或代码的打包代码更改的警告。导致测试失败。这样一来,您就可以更好地了解代码的可靠性,即使只有您在使用它也是如此!
关于R包和执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4758326/