【问题标题】:Will putting functions in one file improve speed?将函数放在一个文件中会提高速度吗?
【发布时间】:2016-07-23 09:45:26
【问题描述】:

如果我将我的所有函数写入一个用于多个脚本的文件中,那么在我的脚本顶部获取包含函数的文件是否会提高我的速度?例如,如果我调用 source(fn.r),我是否能够调用我创建的函数,因为它们已经保存在工作区中?我正在尝试减少脚本运行和提高性能所需的时间。也欢迎任何其他有关提高速度的提示

【问题讨论】:

  • 如果您有很多功能要获取,您可能需要考虑将它们捆绑到一个包中。我怀疑速度上有很大差异,但是加载要获得的包确实很简单。我怀疑从多个文件中获取一个文件会产生很大的不同。如果您采购的文件如此之多,以至于通过将它们放在一个文件中来获得任何性能提升,我猜您已经掌握了数千个文件。

标签: r performance function file


【解决方案1】:

获取文件会加载该脚本中的任何函数。采购对这些函数的运行速度没有太大影响,因为无论如何它们都会在内存中,但是您应该查看 R 编译器以获取获得适度速度提升的简单方法。

请参阅blog post 了解编译器

各种组合功能的性能增益范围介于 运行时间快 2 到 5 倍。这对小人来说很棒 工作量......它需要......此外,通过结合 C/C++ 代码和 R 代码(通过 {Rcpp} 和 {Inline} 包)你 可以将代码的运行时间提高 80 倍……相对于 解释代码。但为了公平起见,用于此类的代码 示例通常是不切实际的代码示例,通常不是 代表真正的 R 工作。因此,有效的速度增益可以是 预计会更小。

使用编译器最简单的方法是将其放在脚本的开头。然后,R 将自动编译您创建的任何函数。

require(compiler)
enableJIT(3)

【讨论】:

    猜你喜欢
    • 2020-07-05
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多