绘制三个函数的运行时间

Suh*_*pta 0 plot r

我有三个函数以不同的方式执行相同的任务:

功能一:

f1 <- function(n) {
  sum = 0
  for(i in 1:n) {
    sum <- sum + a(i)
  }
  return(sum)
}
Run Code Online (Sandbox Code Playgroud)

功能2:

f4 <- function(n) {
  sum = 0
  for(i in 1:n) {
    sum <- sum + b(i)
  }
  return(sum)
}
Run Code Online (Sandbox Code Playgroud)

功能3:

f3 <- function(n) {
  #Done using lgamma
  sum = 0
  for(i in 1:n) {
    sum = sum + c(i)
  }
  return(sum)
}
Run Code Online (Sandbox Code Playgroud)

user我需要使用time from绘制这 3 个函数在值 1 - n 范围内的运行时间system.time。在 R 中如何做到这一点?

Flo*_*ian 5

您可以用来microbenchmark对函数进行计时并ggplot2进行绘图。这是一个例子:

library(microbenchmark)
library(reshape2)
library(ggplot2)

max_n = 15
results = data.frame(sum_lgamma=numeric(max_n),
                     sum_log_gamma_recursive = numeric(max_n),
                     sum_log_gamma_loop = numeric(max_n),
                     id = seq(max_n))
for(i in 1:max_n)
{
  results$sum_lgamma[i] = median(microbenchmark::microbenchmark(sum_lgamma(i))$time)
  results$sum_log_gamma_loop[i] = median(microbenchmark::microbenchmark(sum_log_gamma_loop(i))$time)
  results$sum_log_gamma_recursive[i] = median(microbenchmark::microbenchmark(sum_log_gamma_recursive(i))$time)
}
results = melt(results, id.vars=c("id"))

ggplot(results, aes(x=id,y=value,color=variable)) + geom_line()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述