可以使用system.time
记录用于运行某些代码的时间。这是一个小例子:
system.time(
mean(rnorm(10^6))
)
但我不仅对时间感兴趣,而且还对用于代码的算术运算(即+, - ,*,/)感兴趣。
在上述情况下,为了得到均值,很容易计算求和次数和除法,但是我想要应用它的代码要复杂得多。
因此,我的问题是:R中是否有一个计算算术运算次数的函数?
答案 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中进行算术运算。我没有计算编译代码中的调用的解决方案。如果可能的话,你需要在编译期间设置它。