【发布时间】:2012-08-22 17:13:41
【问题描述】:
我在 R 中开发了一个大型函数库。 目前我只是在所有脚本的开头加载(“源”)函数。
我已经看到我可以创建包。
我的问题是:这会改善我的函数的执行时间吗? (通过将解释器代码转换为机器语言?)
包创建有什么作用?它会创建二进制文件吗?
谢谢 弗雷德
【问题讨论】:
标签: r compilation package interpreter
我在 R 中开发了一个大型函数库。 目前我只是在所有脚本的开头加载(“源”)函数。
我已经看到我可以创建包。
我的问题是:这会改善我的函数的执行时间吗? (通过将解释器代码转换为机器语言?)
包创建有什么作用?它会创建二进制文件吗?
谢谢 弗雷德
【问题讨论】:
标签: r compilation package interpreter
目前还没有 R 编译器 打包您的 R 代码不会大幅缩短其执行时间。它也不会为您创建二进制文件 - 您需要从包 tarball 构建那些(或获取 CRAN 或类似的东西来为您构建它们)。现在有一个用于 R 的字节编译器,并且 R 的包现在默认是字节编译的。速度提升一般不大 - 不要期望类似 C 的速度。
打包 R 代码正是这样做的;它将 R 代码、要编译的代码(C Fortran 等)、手册页、文档、测试等打包成一种标准格式,可以分发给用户并在多个架构上安装/构建。
包可以利用诸如延迟加载之类的东西,这样 R 对象(你的函数说)只在需要时加载,而源将它们全部加载到全局环境中(默认情况下)。
如果您不打算分发您的代码,那么打包仅供您自己使用几乎没有什么好处,但如果您打包并编写文档和示例/测试,您可能会收到关于包代码更改的警报破坏示例或导致测试失败。这样您就可以更好地了解代码的可靠性,即使只有您在使用它!
【讨论】: