【问题标题】:R package and execution timeR包和执行时间
【发布时间】:2012-08-22 17:13:41
【问题描述】:

我在 R 中开发了一个大型函数库。 目前我只是在所有脚本的开头加载(“源”)函数。

我已经看到我可以创建包。

我的问题是:这会改善我的函数的执行时间吗? (通过将解释器代码转换为机器语言?)

包创建有什么作用?它会创建二进制文件吗?

谢谢 弗雷德

【问题讨论】:

    标签: r compilation package interpreter


    【解决方案1】:

    目前还没有 R 编译器 打包您的 R 代码不会大幅缩短其执行时间。它也不会为您创建二进制文件 - 您需要从包 tarball 构建那些(或获取 CRAN 或类似的东西来为您构建它们)。现在有一个用于 R 的字节编译器,并且 R 的包现在默认是字节编译的。速度提升一般不大 - 不要期望类似 C 的速度。

    打包 R 代码正是这样做的;它将 R 代码、要编译的代码(C Fortran 等)、手册页、文档、测试等打包成一种标准格式,可以分发给用户并在多个架构上安装/构建。

    包可以利用诸如延迟加载之类的东西,这样 R 对象(你的函数说)只在需要时加载,而源将它们全部加载到全局环境中(默认情况下)。

    如果您不打算分发您的代码,那么打包仅供您自己使用几乎没有什么好处,但如果您打包并编写文档和示例/测试,您可能会收到关于包代码更改的警报破坏示例或导致测试失败。这样您就可以更好地了解代码的可靠性,即使只有您在使用它!

    【讨论】:

    • 构建一个包很有趣,它“强迫”你记录你的函数(如果你还没有这样做的话)。可以通过 help() 轻松访问文档,这是我喜欢 R 的主要方面之一 - 帮助永远不会远离或模糊不清。
    • 一个包为管理 R 代码提供了一个可靠的框架。一旦函数集合超过一两个源 R 文件,我总是发现它们是有益的——即使在个人使用情况下也是如此。
    • 查看R-forge 自动为不同的操作系统构建你的包。
    • 感谢您的回答。怎么打开包看起来像二进制码?
    • @Fred 这些只是存储 R 代码和帮助文件的有效方法,并且仅在二进制文件或 已安装 tarballs 中。它们不是在编译成机器代码的意义上被编译的。我对这些并不是很熟悉,但是每次加载包时,将对象加载到 R 中可能比解析所有内容(函数是对象)更有效。但需要明确的是 - R 代码是编译的,因此它不会提高 R 代码的执行速度。这些文件可能会提高加载包的效率,但仅此而已。
    猜你喜欢
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2011-04-14
    • 2021-11-17
    • 2016-11-01
    • 1970-01-01
    相关资源
    最近更新 更多