Тест для нескольких размеров выборки

Я знаю, как сравнить несколько решений с точки зрения производительности с mircrobenchmark, Но довольно часто мне нужно делать это на нескольких размерах выборки, например 10^4, 10^5, 10^6, 10^7 и прямоугольный график результатов с размером выборки по оси х.

У меня есть этот код, который делает строки для среднего значения:

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() 

введите описание изображения здесь

Было бы гораздо приятнее иметь коробочный сюжет, если times параметры microbenchmark не один. Есть ли элегантный способ добиться этого?

0 ответов

Другие вопросы по тегам