【问题标题】:R count function callsR计数函数调用
【发布时间】:2023-03-11 20:20:01
【问题描述】:

这应该很容易,但在 google 或 SO 上找不到任何直截了当的答案。

想象一下,我在 R 中运行一个函数 FOuter(),在它的主体内,它执行了一些循环并调用另一个函数 FInner()。有没有一种简单的方法来计算/记录FInner 被调用的次数?我正在尝试估计如果我优化FInner 可以节省多少时间。

【问题讨论】:

  • 我看了看 Rprof。这似乎做了某种“采样”,然后提供了某种时间测量花费在某个功能上。我正在寻找的是更基本的东西。当我调用 FOuter 时,我想知道 FInner 被调用了多少次。
  • 我能想到的最简单的解决方案是在每次调用 FInner 之前增加一个计数器,然后返回带有 return(list(normal.output,counter)) 输出的计数器。

标签: r callstack


【解决方案1】:

您正在寻找trace

f1 <- function() 1
f2 <- function() {
    for(i in 1:10) f1()
}

.count <- 0
trace(f1, tracer=function() .count <<- .count +1)
f2()
.count
# 10
untrace(f1)

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 2017-10-20
    • 2011-11-06
    • 2014-02-14
    • 2014-11-25
    • 2021-12-02
    • 2014-11-25
    • 1970-01-01
    相关资源
    最近更新 更多