可以计算R中算术运算的数量吗?

时间:2017-05-02 15:13:09

标签: r arithmetic-expressions

可以使用system.time记录用于运行某些代码的时间。这是一个小例子:

system.time(
  mean(rnorm(10^6))
  )

但我不仅对时间感兴趣,而且还对用于代码的算术运算(即+, - ,*,/)感兴趣。

在上述情况下,为了得到均值,很容易计算求和次数和除法,但是我想要应用它的代码要复杂得多。

因此,我的问题是:R中是否有一个计算算术运算次数的函数?

1 个答案:

答案 0 :(得分:25)

您可以追踪感兴趣的R函数:

counter <- 0 

trace("+", at = 1, print = FALSE,
      tracer = quote(.GlobalEnv$counter <- .GlobalEnv$counter + 1))
#Tracing function "+" in package "base"
#[1] "+"

Reduce("+", 1:10)
#[1] 55

counter
#[1] 9

untrace("+")
#Untracing function "+" in package "base"

我不确定在这里计算R级别的调用是多么有用。许多(大多数?)函数在C或Fortran代码甚至BLAS中进行算术运算。我没有计算编译代码中的调用的解决方案。如果可能的话,你需要在编译期间设置它。