【问题标题】:Why are `colMeans()` and `rowMeans()` functions faster than using the mean function with `lapply()`?为什么 `colMeans()` 和 `rowMeans()` 函数比使用带有 `lapply()` 的 mean 函数更快?
【发布时间】:2012-09-27 10:01:27
【问题描述】:

我想问的是,从算法上讲,rowMeans()colMeans() 函数做了什么来优化速度?

【问题讨论】:

  • 我不认为这是算法问题,我认为这是一个问题,什么可以直接用 C 编码,什么必须通过 R 解释器。

标签: performance r mean


【解决方案1】:

此外,请考虑lapply() 的作用。它设置对函数mean() 的重复调用。因此,除了实际计算平均值的开销(在快速 C 代码中完成)之外,lapply() 版本反复产生与mean() 相关的健全性检查代码和方法调度的开销。

rowMeans()colMeans() 在内部只进行一组完整性检查,它们的 C 代码经过优化以循环遍历那里的行/列,而不是通过单独的 R 调用。

【讨论】:

    【解决方案2】:

    rowMeanscolMeans 比它们直接调用 C 代码而不是由 R 解释器解释更快。

    【讨论】:

    • rowMeanscolMeans 之间的速度/效率是否存在差异?谢谢。 (查看了关于so的各种问题,但找不到提及,我是否错过了有关此的相关帖子?)
    猜你喜欢
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2013-05-17
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多