几种样本的基准

时间:2016-05-11 09:47:07

标签: r performance visualization microbenchmark

我知道如何在性能方面与mircrobenchmark比较几种解决方案。但通常我需要在几个样本大小上进行,例如10^4, 10^5, 10^6, 10^7和方框图在x轴上绘制样本大小。

我有这个代码用于表示平均线:

set.seed(1001)
N <- c(3, 4, 5, 6 ,7)
n <- 10^N
res <- lapply(n, function(x) {
  d <- sample(1:x/10, 5 * x, replace=T)
  d <- c(d, sample(d, x, replace=T))  # ensure many duplicates
  dt <- data.table(d)
  mb <- microbenchmark::microbenchmark(
  "duplicated(original)" = d[!(duplicated(d) | duplicated(d, fromLast=TRUE))],
  "tabulate" = { ud = unique(d); ud[tabulate(match(d, ud)) == 1L] },
  "data.table" = dt[, count:= .N, by = d][count == 1]$d,
  times = 1,unit = "ms")
  sm <- summary(mb)[, c(1, 4, 8)]
  sm$size = x
  return(sm)

})

res <- do.call("rbind", res)

require(ggplot2)
##The values Year, Value, School_ID are
##inherited by the geoms
ggplot(res, aes(x = res$size, y = res$mean, colour=res$exp)) + 
geom_line() + scale_x_log10() + scale_y_log10() +
geom_point() 

enter image description here

如果times microbenchmark的{​​{1}}参数不是一个,那么盒子图会更好。有没有一种优雅的方法来实现这一目标?

0 个答案:

没有答案