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

ehi*_*ehi 14 r arithmetic-expressions

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

system.time(
  mean(rnorm(10^6))
  )
Run Code Online (Sandbox Code Playgroud)

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

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

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

Rol*_*and 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"
Run Code Online (Sandbox Code Playgroud)

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