-
Notifications
You must be signed in to change notification settings - Fork 34
mean2
matrixStats: Benchmark report
This report benchmark the performance of mean2() against alternative methods.
- mean() + [()
- mean.default() + [() - avoids method dispatching
as below
> mean2_R_v1 <- function(x, na.rm = FALSE, idxs) {
+ mean(x[idxs], na.rm = na.rm)
+ }
and
> mean2_R_v2 <- function(x, na.rm = FALSE, idxs) {
+ mean.default(x[idxs], na.rm = na.rm)
+ }
> rvector <- function(n, mode = c("logical", "double", "integer"), range = c(-100, +100), na_prob = 0) {
+ mode <- match.arg(mode)
+ if (mode == "logical") {
+ x <- sample(c(FALSE, TRUE), size = n, replace = TRUE)
+ } else {
+ x <- runif(n, min = range[1], max = range[2])
+ }
+ storage.mode(x) <- mode
+ if (na_prob > 0)
+ x[sample(n, size = na_prob * n)] <- NA
+ x
+ }
> rvectors <- function(scale = 10, seed = 1, ...) {
+ set.seed(seed)
+ data <- list()
+ data[[1]] <- rvector(n = scale * 100, ...)
+ data[[2]] <- rvector(n = scale * 1000, ...)
+ data[[3]] <- rvector(n = scale * 10000, ...)
+ data[[4]] <- rvector(n = scale * 1e+05, ...)
+ data[[5]] <- rvector(n = scale * 1e+06, ...)
+ names(data) <- sprintf("n = %d", sapply(data, FUN = length))
+ data
+ }
> data <- rvectors(mode = mode)
> x <- data[["n = 1000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237480 173.0 5709258 305.0 5709258 305.0
Vcells 33440267 255.2 58570544 446.9 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, refine = TRUE), mean2_no_refine = mean2(x, refine = FALSE),
+ mean = mean(x), mean.default = mean.default(x), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 1000+all data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
4 | mean.default | 0.001515 | 0.0015645 | 0.0017326 | 0.0016040 | 0.0016535 | 0.011704 |
1 | mean2 | 0.001699 | 0.0017375 | 0.0019839 | 0.0017725 | 0.0018385 | 0.019023 |
2 | mean2_no_refine | 0.001706 | 0.0017340 | 0.0018111 | 0.0017765 | 0.0018465 | 0.002247 |
3 | mean | 0.002852 | 0.0029990 | 0.0032766 | 0.0030850 | 0.0032150 | 0.018680 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
4 | mean.default | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
1 | mean2 | 1.121452 | 1.110578 | 1.145010 | 1.105050 | 1.111884 | 1.6253418 |
2 | mean2_no_refine | 1.126073 | 1.108341 | 1.045272 | 1.107544 | 1.116722 | 0.1919856 |
3 | mean | 1.882508 | 1.916906 | 1.891120 | 1.923317 | 1.944360 | 1.5960355 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 1000+all data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000"]]
> subset
[1] 0.2
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3235334 172.8 5709258 305.0 5709258 305.0
Vcells 11804806 90.1 46856436 357.5 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000+0.2 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.001116 | 0.0011765 | 0.0014133 | 0.0012820 | 0.0013720 | 0.013952 |
1 | mean2 | 0.001118 | 0.0011690 | 0.0013048 | 0.0012825 | 0.0013955 | 0.001716 |
4 | mean.default+[() | 0.001853 | 0.0021405 | 0.0023856 | 0.0022795 | 0.0024160 | 0.010225 |
3 | mean+[() | 0.003809 | 0.0040480 | 0.0044210 | 0.0041795 | 0.0043395 | 0.022491 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.0000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
1 | mean2 | 1.001792 | 0.9936252 | 0.9232418 | 1.000390 | 1.017128 | 0.1229931 |
4 | mean.default+[() | 1.660394 | 1.8193795 | 1.6880002 | 1.778081 | 1.760933 | 0.7328698 |
3 | mean+[() | 3.413082 | 3.4407140 | 3.1282062 | 3.260140 | 3.162901 | 1.6120269 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000+0.2 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000"]]
> subset
[1] 0.4
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3235418 172.8 5709258 305 5709258 305.0
Vcells 11805482 90.1 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000+0.4 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 0.001475 | 0.0015355 | 0.0017779 | 0.0016065 | 0.0017025 | 0.016743 |
2 | mean2_no_refine | 0.001475 | 0.0015620 | 0.0016735 | 0.0016425 | 0.0017490 | 0.002661 |
4 | mean.default+[() | 0.002469 | 0.0026850 | 0.0028144 | 0.0027760 | 0.0028850 | 0.005091 |
3 | mean+[() | 0.004350 | 0.0045825 | 0.0050131 | 0.0047255 | 0.0049415 | 0.028994 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | mean2_no_refine | 1.000000 | 1.017258 | 0.9412618 | 1.022409 | 1.027313 | 0.1589321 |
4 | mean.default+[() | 1.673898 | 1.748616 | 1.5830226 | 1.727980 | 1.694567 | 0.3040674 |
3 | mean+[() | 2.949152 | 2.984370 | 2.8196851 | 2.941488 | 2.902496 | 1.7317088 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000+0.4 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000"]]
> subset
[1] 0.8
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3235499 172.8 5709258 305 5709258 305.0
Vcells 11805736 90.1 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000+0.8 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.002204 | 0.0022815 | 0.0023979 | 0.0023940 | 0.0024480 | 0.003043 |
1 | mean2 | 0.002205 | 0.0022845 | 0.0025144 | 0.0024115 | 0.0025000 | 0.011565 |
4 | mean.default+[() | 0.003401 | 0.0036100 | 0.0038942 | 0.0037255 | 0.0038805 | 0.017993 |
3 | mean+[() | 0.005348 | 0.0055400 | 0.0059136 | 0.0056730 | 0.0059210 | 0.024336 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.000454 | 1.001315 | 1.048571 | 1.007310 | 1.021242 | 3.800526 |
4 | mean.default+[() | 1.543103 | 1.582292 | 1.624014 | 1.556182 | 1.585172 | 5.912915 |
3 | mean+[() | 2.426497 | 2.428227 | 2.466152 | 2.369674 | 2.418709 | 7.997371 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000+0.8 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3235512 172.8 5709258 305 5709258 305.0
Vcells 11805522 90.1 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, refine = TRUE), mean2_no_refine = mean2(x, refine = FALSE),
+ mean = mean(x), mean.default = mean.default(x), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 10000+all data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
4 | mean.default | 0.008665 | 0.0087360 | 0.0088370 | 0.0087900 | 0.0088355 | 0.011673 |
3 | mean | 0.010130 | 0.0103125 | 0.0106210 | 0.0104245 | 0.0105620 | 0.027637 |
1 | mean2 | 0.011046 | 0.0111320 | 0.0112285 | 0.0112025 | 0.0112600 | 0.013338 |
2 | mean2_no_refine | 0.011064 | 0.0111220 | 0.0113622 | 0.0112050 | 0.0112820 | 0.022468 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
4 | mean.default | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
3 | mean | 1.169071 | 1.180460 | 1.201879 | 1.185950 | 1.195405 | 2.367600 |
1 | mean2 | 1.274784 | 1.274267 | 1.270628 | 1.274460 | 1.274404 | 1.142637 |
2 | mean2_no_refine | 1.276861 | 1.273123 | 1.285754 | 1.274744 | 1.276894 | 1.924784 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 10000+all data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000"]]
> subset
[1] 0.2
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3235661 172.9 5709258 305 5709258 305.0
Vcells 11806907 90.1 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000+0.2 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.004471 | 0.0045425 | 0.0046697 | 0.0046325 | 0.0047695 | 0.005352 |
1 | mean2 | 0.004475 | 0.0045420 | 0.0047574 | 0.0046515 | 0.0047305 | 0.013912 |
4 | mean.default+[() | 0.006273 | 0.0066685 | 0.0070391 | 0.0068180 | 0.0070980 | 0.011162 |
3 | mean+[() | 0.008449 | 0.0088215 | 0.0095840 | 0.0090405 | 0.0093300 | 0.043923 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.000895 | 0.9998899 | 1.018783 | 1.004101 | 0.991823 | 2.599402 |
4 | mean.default+[() | 1.403042 | 1.4680242 | 1.507397 | 1.471775 | 1.488206 | 2.085576 |
3 | mean+[() | 1.889734 | 1.9419923 | 2.052391 | 1.951538 | 1.956180 | 8.206839 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000+0.2 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000"]]
> subset
[1] 0.4
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3235742 172.9 5709258 305 5709258 305.0
Vcells 11808262 90.1 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000+0.4 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 0.008079 | 0.0082295 | 0.0083584 | 0.0083620 | 0.0084545 | 0.009005 |
2 | mean2_no_refine | 0.008146 | 0.0082730 | 0.0084673 | 0.0083765 | 0.0084530 | 0.017390 |
4 | mean.default+[() | 0.011325 | 0.0115500 | 0.0118261 | 0.0116450 | 0.0118065 | 0.015502 |
3 | mean+[() | 0.013316 | 0.0136905 | 0.0144581 | 0.0138720 | 0.0141120 | 0.051134 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 | 1.000000 |
2 | mean2_no_refine | 1.008293 | 1.005286 | 1.013034 | 1.001734 | 0.9998226 | 1.931149 |
4 | mean.default+[() | 1.401782 | 1.403487 | 1.414878 | 1.392609 | 1.3964752 | 1.721488 |
3 | mean+[() | 1.648224 | 1.663588 | 1.729778 | 1.658933 | 1.6691703 | 5.678401 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000+0.4 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000"]]
> subset
[1] 0.8
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3235823 172.9 5709258 305 5709258 305.0
Vcells 11810681 90.2 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000+0.8 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 0.015401 | 0.0155465 | 0.0157903 | 0.0156530 | 0.0157390 | 0.029470 |
2 | mean2_no_refine | 0.015407 | 0.0155830 | 0.0156897 | 0.0156835 | 0.0158065 | 0.016155 |
4 | mean.default+[() | 0.020783 | 0.0211130 | 0.0219483 | 0.0212785 | 0.0215335 | 0.054715 |
3 | mean+[() | 0.023065 | 0.0233810 | 0.0239698 | 0.0235295 | 0.0237565 | 0.044138 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | mean2_no_refine | 1.000390 | 1.002348 | 0.9936265 | 1.001948 | 1.004289 | 0.5481846 |
4 | mean.default+[() | 1.349458 | 1.358055 | 1.3899870 | 1.359388 | 1.368162 | 1.8566339 |
3 | mean+[() | 1.497630 | 1.503940 | 1.5180053 | 1.503194 | 1.509403 | 1.4977265 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000+0.8 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 100000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3235836 172.9 5709258 305 5709258 305.0
Vcells 11810692 90.2 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, refine = TRUE), mean2_no_refine = mean2(x, refine = FALSE),
+ mean = mean(x), mean.default = mean.default(x), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 100000+all data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
4 | mean.default | 0.079641 | 0.0799895 | 0.0803480 | 0.0800865 | 0.0802345 | 0.090928 |
3 | mean | 0.081914 | 0.0822575 | 0.0826470 | 0.0823535 | 0.0824645 | 0.105321 |
2 | mean2_no_refine | 0.104137 | 0.1042020 | 0.1043205 | 0.1042390 | 0.1043350 | 0.106373 |
1 | mean2 | 0.104141 | 0.1042010 | 0.1045264 | 0.1042400 | 0.1043290 | 0.124704 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
4 | mean.default | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
3 | mean | 1.028541 | 1.028354 | 1.028613 | 1.028307 | 1.027794 | 1.158290 |
2 | mean2_no_refine | 1.307580 | 1.302696 | 1.298358 | 1.301580 | 1.300376 | 1.169860 |
1 | mean2 | 1.307630 | 1.302684 | 1.300920 | 1.301593 | 1.300301 | 1.371459 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 100000+all data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 100000"]]
> subset
[1] 0.2
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3235985 172.9 5709258 305 5709258 305.0
Vcells 11817226 90.2 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 100000+0.2 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.037530 | 0.0376040 | 0.0378154 | 0.0376620 | 0.0378010 | 0.048253 |
1 | mean2 | 0.037525 | 0.0376205 | 0.0379368 | 0.0376650 | 0.0377360 | 0.061969 |
4 | mean.default+[() | 0.051469 | 0.0519295 | 0.0532452 | 0.0521640 | 0.0525655 | 0.104971 |
3 | mean+[() | 0.053599 | 0.0541265 | 0.0548172 | 0.0544555 | 0.0547025 | 0.074824 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 | 1.000000 |
1 | mean2 | 0.9998668 | 1.000439 | 1.003209 | 1.000080 | 0.9982805 | 1.284252 |
4 | mean.default+[() | 1.3714095 | 1.380957 | 1.408028 | 1.385057 | 1.3905849 | 2.175429 |
3 | mean+[() | 1.4281641 | 1.439381 | 1.449599 | 1.445900 | 1.4471178 | 1.550660 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 100000+0.2 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 100000"]]
> subset
[1] 0.4
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236066 172.9 5709258 305 5709258 305.0
Vcells 11827802 90.3 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 100000+0.4 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.073510 | 0.073633 | 0.0742540 | 0.0736695 | 0.0737825 | 0.120578 |
1 | mean2 | 0.073459 | 0.073623 | 0.0737102 | 0.0736765 | 0.0737710 | 0.074442 |
4 | mean.default+[() | 0.097049 | 0.097575 | 0.0988462 | 0.0978705 | 0.0989045 | 0.121276 |
3 | mean+[() | 0.099286 | 0.099900 | 0.1013969 | 0.1002855 | 0.1009365 | 0.131933 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.0000000 | 1.0000000 | 1.0000000 | 1.000000 | 1.0000000 | 1.0000000 |
1 | mean2 | 0.9993062 | 0.9998642 | 0.9926778 | 1.000095 | 0.9998441 | 0.6173763 |
4 | mean.default+[() | 1.3202149 | 1.3251531 | 1.3311911 | 1.328508 | 1.3404872 | 1.0057888 |
3 | mean+[() | 1.3506462 | 1.3567286 | 1.3655416 | 1.361289 | 1.3680276 | 1.0941714 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 100000+0.4 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 100000"]]
> subset
[1] 0.8
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236147 172.9 5709258 305 5709258 305.0
Vcells 11847856 90.4 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 100000+0.8 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 0.145429 | 0.1455630 | 0.1458392 | 0.1456595 | 0.1458325 | 0.151034 |
2 | mean2_no_refine | 0.145463 | 0.1455685 | 0.1469765 | 0.1456625 | 0.1458465 | 0.210989 |
4 | mean.default+[() | 0.189048 | 0.1899565 | 0.1995546 | 0.1904935 | 0.1911445 | 0.282780 |
3 | mean+[() | 0.191331 | 0.1924660 | 0.2076123 | 0.1931690 | 0.1967220 | 0.293314 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | mean2_no_refine | 1.000234 | 1.000038 | 1.007799 | 1.000021 | 1.000096 | 1.396964 |
4 | mean.default+[() | 1.299933 | 1.304978 | 1.368320 | 1.307800 | 1.310713 | 1.872294 |
3 | mean+[() | 1.315632 | 1.322218 | 1.423570 | 1.326168 | 1.348959 | 1.942039 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 100000+0.8 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236160 172.9 5709258 305 5709258 305.0
Vcells 11848060 90.4 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, refine = TRUE), mean2_no_refine = mean2(x, refine = FALSE),
+ mean = mean(x), mean.default = mean.default(x), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 1000000+all data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
4 | mean.default | 0.786145 | 0.7892925 | 0.7904622 | 0.7898235 | 0.791267 | 0.814502 |
3 | mean | 0.789484 | 0.7929370 | 0.7950156 | 0.7938710 | 0.795753 | 0.826365 |
1 | mean2 | 1.025168 | 1.0300525 | 1.0323308 | 1.0303420 | 1.032055 | 1.078533 |
2 | mean2_no_refine | 1.004467 | 1.0301110 | 1.0315238 | 1.0304890 | 1.032379 | 1.066795 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
4 | mean.default | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
3 | mean | 1.004247 | 1.004617 | 1.005760 | 1.005125 | 1.005669 | 1.014565 |
1 | mean2 | 1.304044 | 1.305033 | 1.305984 | 1.304522 | 1.304306 | 1.324162 |
2 | mean2_no_refine | 1.277712 | 1.305107 | 1.304963 | 1.304708 | 1.304716 | 1.309751 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 1000000+all data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000000"]]
> subset
[1] 0.2
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236309 172.9 5709258 305 5709258 305.0
Vcells 11908593 90.9 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000000+0.2 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.365119 | 0.3783240 | 0.3926940 | 0.3874270 | 0.4087540 | 0.432756 |
1 | mean2 | 0.369178 | 0.3814190 | 0.3944363 | 0.3896345 | 0.4003870 | 0.568113 |
4 | mean.default+[() | 0.511613 | 0.5561065 | 0.7117908 | 0.7692215 | 0.7890970 | 0.851525 |
3 | mean+[() | 0.517016 | 0.7588860 | 0.7335599 | 0.7762285 | 0.7968365 | 0.841731 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 | 1.000000 |
1 | mean2 | 1.011117 | 1.008181 | 1.004437 | 1.005698 | 0.9795305 | 1.312779 |
4 | mean.default+[() | 1.401223 | 1.469921 | 1.812584 | 1.985462 | 1.9304936 | 1.967679 |
3 | mean+[() | 1.416020 | 2.005916 | 1.868019 | 2.003548 | 1.9494280 | 1.945048 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000000+0.2 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000000"]]
> subset
[1] 0.4
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236390 172.9 5709258 305 5709258 305.0
Vcells 12008649 91.7 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000000+0.4 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 0.723781 | 0.7269900 | 0.7443883 | 0.7323950 | 0.7396745 | 0.983666 |
2 | mean2_no_refine | 0.723624 | 0.7284550 | 0.7478266 | 0.7325375 | 0.7392160 | 1.297313 |
4 | mean.default+[() | 0.967273 | 0.9789205 | 1.0765917 | 0.9902460 | 1.0600675 | 1.483031 |
3 | mean+[() | 0.970599 | 0.9862590 | 1.1480598 | 0.9992395 | 1.1701925 | 7.073463 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 | 1.000000 |
2 | mean2_no_refine | 0.9997831 | 1.002015 | 1.004619 | 1.000195 | 0.9993801 | 1.318855 |
4 | mean.default+[() | 1.3364167 | 1.346539 | 1.446277 | 1.352065 | 1.4331540 | 1.507657 |
3 | mean+[() | 1.3410120 | 1.356634 | 1.542286 | 1.364345 | 1.5820371 | 7.190919 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000000+0.4 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000000"]]
> subset
[1] 0.8
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236471 172.9 5709258 305 5709258 305.0
Vcells 12209460 93.2 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000000+0.8 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 1.448900 | 1.454125 | 1.475360 | 1.460513 | 1.468019 | 2.069696 |
2 | mean2_no_refine | 1.449127 | 1.454113 | 1.489845 | 1.460797 | 1.474863 | 2.108258 |
3 | mean+[() | 1.908811 | 1.923137 | 2.391497 | 1.954579 | 2.733780 | 10.532991 |
4 | mean.default+[() | 1.895716 | 1.912886 | 2.401140 | 2.190495 | 2.735460 | 10.424394 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | mean2_no_refine | 1.000157 | 0.9999921 | 1.009818 | 1.000195 | 1.004662 | 1.018632 |
3 | mean+[() | 1.317421 | 1.3225394 | 1.620958 | 1.338283 | 1.862224 | 5.089149 |
4 | mean.default+[() | 1.308383 | 1.3154898 | 1.627494 | 1.499813 | 1.863368 | 5.036679 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 1000000+0.8 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236484 172.9 5709258 305 5709258 305.0
Vcells 12209033 93.2 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, refine = TRUE), mean2_no_refine = mean2(x, refine = FALSE),
+ mean = mean(x), mean.default = mean.default(x), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 10000000+all data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
4 | mean.default | 7.838175 | 8.027278 | 8.090957 | 8.046798 | 8.062791 | 12.75987 |
3 | mean | 7.845059 | 8.041952 | 8.099937 | 8.062498 | 8.084361 | 11.69292 |
2 | mean2_no_refine | 10.151019 | 10.443252 | 10.466833 | 10.469959 | 10.477272 | 11.38110 |
1 | mean2 | 10.174916 | 10.453464 | 10.458192 | 10.471350 | 10.481231 | 11.15226 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
4 | mean.default | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
3 | mean | 1.000878 | 1.001828 | 1.001110 | 1.001951 | 1.002675 | 0.9163828 |
2 | mean2_no_refine | 1.295074 | 1.300970 | 1.293646 | 1.301133 | 1.299460 | 0.8919446 |
1 | mean2 | 1.298123 | 1.302243 | 1.292578 | 1.301306 | 1.299951 | 0.8740105 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 10000000+all data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000000"]]
> subset
[1] 0.2
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236633 172.9 5709258 305 5709258 305.0
Vcells 12809566 97.8 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000000+0.2 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 4.323749 | 4.378862 | 4.500883 | 4.400150 | 4.499671 | 5.291595 |
1 | mean2 | 4.336977 | 4.380094 | 4.508883 | 4.408432 | 4.538824 | 5.412560 |
4 | mean.default+[() | 6.434353 | 8.298769 | 9.269994 | 8.439051 | 8.978974 | 21.420245 |
3 | mean+[() | 6.442737 | 8.317103 | 9.132680 | 8.445161 | 8.762881 | 22.056313 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.003059 | 1.000282 | 1.001777 | 1.001882 | 1.008701 | 1.022860 |
4 | mean.default+[() | 1.488142 | 1.895189 | 2.059595 | 1.917901 | 1.995473 | 4.047975 |
3 | mean+[() | 1.490081 | 1.899376 | 2.029087 | 1.919290 | 1.947449 | 4.168179 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000000+0.2 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000000"]]
> subset
[1] 0.4
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236714 172.9 5709258 305 5709258 305.0
Vcells 13810522 105.4 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000000+0.4 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 7.550001 | 7.574736 | 7.699777 | 7.588044 | 7.611163 | 9.826406 |
2 | mean2_no_refine | 7.541923 | 7.571379 | 7.660771 | 7.589351 | 7.616875 | 9.472421 |
4 | mean.default+[() | 10.923186 | 14.642793 | 15.691470 | 14.743345 | 14.992078 | 29.411238 |
3 | mean+[() | 10.911724 | 14.633787 | 17.767953 | 14.763592 | 15.058673 | 279.960072 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | mean2 | 1.0000000 | 1.0000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | mean2_no_refine | 0.9989301 | 0.9995569 | 0.9949341 | 1.000172 | 1.000750 | 0.9639761 |
4 | mean.default+[() | 1.4467794 | 1.9331095 | 2.0379123 | 1.942970 | 1.969749 | 2.9930819 |
3 | mean+[() | 1.4452613 | 1.9319205 | 2.3075934 | 1.945639 | 1.978498 | 28.4905867 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000000+0.4 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000000"]]
> subset
[1] 0.8
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236792 172.9 5709258 305 5709258 305.0
Vcells 15810571 120.7 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000000+0.8 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 14.58030 | 14.69894 | 14.97032 | 14.72901 | 14.87608 | 27.72130 |
1 | mean2 | 14.55143 | 14.70976 | 14.92888 | 14.77023 | 14.92913 | 18.13128 |
4 | mean.default+[() | 27.41324 | 27.63234 | 36.26475 | 27.92353 | 36.05713 | 295.96439 |
3 | mean+[() | 27.57888 | 27.86948 | 34.87476 | 27.99913 | 38.46810 | 296.02413 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.0000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 0.9980203 | 1.000736 | 0.9972316 | 1.002799 | 1.003566 | 0.654056 |
4 | mean.default+[() | 1.8801563 | 1.879886 | 2.4224422 | 1.895819 | 2.423832 | 10.676424 |
3 | mean+[() | 1.8915170 | 1.896019 | 2.3295929 | 1.900952 | 2.585902 | 10.678579 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on integer+n = 10000000+0.8 data. Outliers are displayed as crosses. Times are in milliseconds.
> rvector <- function(n, mode = c("logical", "double", "integer"), range = c(-100, +100), na_prob = 0) {
+ mode <- match.arg(mode)
+ if (mode == "logical") {
+ x <- sample(c(FALSE, TRUE), size = n, replace = TRUE)
+ } else {
+ x <- runif(n, min = range[1], max = range[2])
+ }
+ storage.mode(x) <- mode
+ if (na_prob > 0)
+ x[sample(n, size = na_prob * n)] <- NA
+ x
+ }
> rvectors <- function(scale = 10, seed = 1, ...) {
+ set.seed(seed)
+ data <- list()
+ data[[1]] <- rvector(n = scale * 100, ...)
+ data[[2]] <- rvector(n = scale * 1000, ...)
+ data[[3]] <- rvector(n = scale * 10000, ...)
+ data[[4]] <- rvector(n = scale * 1e+05, ...)
+ data[[5]] <- rvector(n = scale * 1e+06, ...)
+ names(data) <- sprintf("n = %d", sapply(data, FUN = length))
+ data
+ }
> data <- rvectors(mode = mode)
> x <- data[["n = 1000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236808 172.9 5709258 305 5709258 305.0
Vcells 21365649 163.1 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, refine = TRUE), mean2_no_refine = mean2(x, refine = FALSE),
+ mean = mean(x), mean.default = mean.default(x), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 1000+all data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.001716 | 0.0017420 | 0.0018221 | 0.0017765 | 0.0018495 | 0.002486 |
4 | mean.default | 0.002271 | 0.0023340 | 0.0024352 | 0.0023695 | 0.0024610 | 0.005381 |
1 | mean2 | 0.002752 | 0.0027915 | 0.0029928 | 0.0028320 | 0.0029040 | 0.015064 |
3 | mean | 0.003761 | 0.0038445 | 0.0041719 | 0.0039075 | 0.0040475 | 0.024380 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
4 | mean.default | 1.323427 | 1.339839 | 1.336491 | 1.333802 | 1.330630 | 2.164521 |
1 | mean2 | 1.603730 | 1.602468 | 1.642522 | 1.594146 | 1.570154 | 6.059533 |
3 | mean | 2.191725 | 2.206946 | 2.289594 | 2.199550 | 2.188429 | 9.806919 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 1000+all data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000"]]
> subset
[1] 0.2
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3236957 172.9 5709258 305 5709258 305.0
Vcells 17367366 132.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000+0.2 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.001116 | 0.0011850 | 0.0015905 | 0.0012985 | 0.0013785 | 0.027222 |
1 | mean2 | 0.001332 | 0.0014060 | 0.0015384 | 0.0015205 | 0.0016235 | 0.002200 |
4 | mean.default+[() | 0.002196 | 0.0024480 | 0.0027586 | 0.0025645 | 0.0027325 | 0.017722 |
3 | mean+[() | 0.004281 | 0.0044515 | 0.0048223 | 0.0045720 | 0.0047375 | 0.026206 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
1 | mean2 | 1.193548 | 1.186498 | 0.9672118 | 1.170967 | 1.177729 | 0.0808170 |
4 | mean.default+[() | 1.967742 | 2.065823 | 1.7344059 | 1.974971 | 1.982227 | 0.6510176 |
3 | mean+[() | 3.836022 | 3.756540 | 3.0319017 | 3.520986 | 3.436707 | 0.9626772 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000+0.2 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000"]]
> subset
[1] 0.4
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237038 172.9 5709258 305 5709258 305.0
Vcells 17367522 132.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000+0.4 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.001498 | 0.0015725 | 0.0016954 | 0.0016760 | 0.0017665 | 0.002954 |
1 | mean2 | 0.001916 | 0.0019735 | 0.0022293 | 0.0020475 | 0.0021570 | 0.016848 |
4 | mean.default+[() | 0.002896 | 0.0030865 | 0.0032503 | 0.0032045 | 0.0033220 | 0.005748 |
3 | mean+[() | 0.004805 | 0.0051075 | 0.0055593 | 0.0052530 | 0.0054005 | 0.033333 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.279039 | 1.255008 | 1.314915 | 1.221659 | 1.221059 | 5.703453 |
4 | mean.default+[() | 1.933244 | 1.962798 | 1.917123 | 1.911993 | 1.880555 | 1.945836 |
3 | mean+[() | 3.207610 | 3.248013 | 3.279053 | 3.134248 | 3.057175 | 11.284022 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000+0.4 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000"]]
> subset
[1] 0.8
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237119 172.9 5709258 305 5709258 305.0
Vcells 17367776 132.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000+0.8 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.002210 | 0.0023095 | 0.0024092 | 0.0023870 | 0.0024695 | 0.003308 |
1 | mean2 | 0.003052 | 0.0031350 | 0.0033802 | 0.0032550 | 0.0033345 | 0.014260 |
4 | mean.default+[() | 0.004130 | 0.0044505 | 0.0049668 | 0.0045410 | 0.0046905 | 0.022495 |
3 | mean+[() | 0.006186 | 0.0064710 | 0.0068803 | 0.0066005 | 0.0067905 | 0.027571 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.380996 | 1.357437 | 1.403032 | 1.363636 | 1.350273 | 4.310762 |
4 | mean.default+[() | 1.868778 | 1.927040 | 2.061622 | 1.902388 | 1.899372 | 6.800181 |
3 | mean+[() | 2.799095 | 2.801905 | 2.855856 | 2.765186 | 2.749747 | 8.334643 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000+0.8 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237132 172.9 5709258 305 5709258 305.0
Vcells 17367349 132.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, refine = TRUE), mean2_no_refine = mean2(x, refine = FALSE),
+ mean = mean(x), mean.default = mean.default(x), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 10000+all data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.011101 | 0.0112655 | 0.0114860 | 0.0113290 | 0.0114125 | 0.025110 |
4 | mean.default | 0.016336 | 0.0164650 | 0.0165716 | 0.0165110 | 0.0165920 | 0.019920 |
3 | mean | 0.018064 | 0.0182985 | 0.0186318 | 0.0184075 | 0.0185445 | 0.038576 |
1 | mean2 | 0.021431 | 0.0215550 | 0.0216686 | 0.0216180 | 0.0217070 | 0.024017 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
4 | mean.default | 1.471579 | 1.461542 | 1.442760 | 1.457410 | 1.453844 | 0.7933094 |
3 | mean | 1.627241 | 1.624295 | 1.622123 | 1.624812 | 1.624929 | 1.5362804 |
1 | mean2 | 1.930547 | 1.913364 | 1.886513 | 1.908200 | 1.902037 | 0.9564715 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 10000+all data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000"]]
> subset
[1] 0.2
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237281 172.9 5709258 305 5709258 305.0
Vcells 17369779 132.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000+0.2 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.004530 | 0.0046335 | 0.0047866 | 0.0047750 | 0.0048600 | 0.005406 |
1 | mean2 | 0.006605 | 0.0067270 | 0.0070908 | 0.0068555 | 0.0069750 | 0.021635 |
4 | mean.default+[() | 0.008672 | 0.0090210 | 0.0093464 | 0.0091230 | 0.0093920 | 0.014210 |
3 | mean+[() | 0.010983 | 0.0113345 | 0.0128229 | 0.0115885 | 0.0118505 | 0.075978 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.458057 | 1.451818 | 1.481377 | 1.435707 | 1.435185 | 4.002035 |
4 | mean.default+[() | 1.914349 | 1.946908 | 1.952618 | 1.910576 | 1.932510 | 2.628561 |
3 | mean+[() | 2.424503 | 2.446207 | 2.678909 | 2.426911 | 2.438375 | 14.054384 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000+0.2 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000"]]
> subset
[1] 0.4
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237362 172.9 5709258 305 5709258 305.0
Vcells 17370835 132.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000+0.4 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.008216 | 0.0083835 | 0.0086482 | 0.0084560 | 0.0085430 | 0.026035 |
1 | mean2 | 0.012365 | 0.0125090 | 0.0126900 | 0.0126325 | 0.0127325 | 0.015401 |
4 | mean.default+[() | 0.015329 | 0.0158385 | 0.0163284 | 0.0160000 | 0.0162725 | 0.029203 |
3 | mean+[() | 0.017643 | 0.0181820 | 0.0189174 | 0.0183485 | 0.0185935 | 0.057063 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
1 | mean2 | 1.504990 | 1.492098 | 1.467362 | 1.493910 | 1.490401 | 0.5915498 |
4 | mean.default+[() | 1.865750 | 1.889247 | 1.888076 | 1.892148 | 1.904776 | 1.1216824 |
3 | mean+[() | 2.147395 | 2.168784 | 2.187444 | 2.169879 | 2.176460 | 2.1917803 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000+0.4 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000"]]
> subset
[1] 0.8
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237443 172.9 5709258 305 5709258 305.0
Vcells 17372889 132.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000+0.8 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.015579 | 0.0156895 | 0.0158413 | 0.0158020 | 0.0159090 | 0.018410 |
1 | mean2 | 0.023814 | 0.0239480 | 0.0241550 | 0.0240315 | 0.0241345 | 0.035644 |
4 | mean.default+[() | 0.028507 | 0.0294860 | 0.0303152 | 0.0297440 | 0.0300290 | 0.060273 |
3 | mean+[() | 0.030630 | 0.0318755 | 0.0323503 | 0.0321665 | 0.0324370 | 0.052719 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.528596 | 1.526371 | 1.524809 | 1.520789 | 1.517034 | 1.936122 |
4 | mean.default+[() | 1.829835 | 1.879346 | 1.913677 | 1.882293 | 1.887548 | 3.273927 |
3 | mean+[() | 1.966108 | 2.031645 | 2.042148 | 2.035597 | 2.038909 | 2.863607 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000+0.8 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 100000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237456 172.9 5709258 305 5709258 305.0
Vcells 17372462 132.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, refine = TRUE), mean2_no_refine = mean2(x, refine = FALSE),
+ mean = mean(x), mean.default = mean.default(x), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 100000+all data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.104148 | 0.1042345 | 0.1044468 | 0.1042690 | 0.1043975 | 0.106605 |
4 | mean.default | 0.155528 | 0.1556080 | 0.1558212 | 0.1556980 | 0.1557955 | 0.158118 |
3 | mean | 0.157820 | 0.1580230 | 0.1583918 | 0.1581295 | 0.1582500 | 0.179802 |
1 | mean2 | 0.207014 | 0.2070770 | 0.2074356 | 0.2071165 | 0.2071970 | 0.227233 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
4 | mean.default | 1.493336 | 1.492865 | 1.491873 | 1.493234 | 1.492330 | 1.483214 |
3 | mean | 1.515343 | 1.516034 | 1.516484 | 1.516553 | 1.515841 | 1.686619 |
1 | mean2 | 1.987691 | 1.986646 | 1.986042 | 1.986367 | 1.984693 | 2.131542 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 100000+all data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 100000"]]
> subset
[1] 0.2
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237605 173.0 5709258 305 5709258 305.0
Vcells 17378996 132.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 100000+0.2 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.038247 | 0.0383865 | 0.0385506 | 0.0384785 | 0.0385855 | 0.041967 |
1 | mean2 | 0.059953 | 0.0600960 | 0.0608196 | 0.0601635 | 0.0602835 | 0.118204 |
4 | mean.default+[() | 0.073587 | 0.0743345 | 0.0764475 | 0.0747785 | 0.0754460 | 0.158558 |
3 | mean+[() | 0.075907 | 0.0770315 | 0.0789902 | 0.0774320 | 0.0784345 | 0.104829 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.567522 | 1.565550 | 1.577656 | 1.563562 | 1.562336 | 2.816594 |
4 | mean.default+[() | 1.923994 | 1.936475 | 1.983041 | 1.943384 | 1.955294 | 3.778159 |
3 | mean+[() | 1.984652 | 2.006734 | 2.048998 | 2.012345 | 2.032745 | 2.497891 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 100000+0.2 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 100000"]]
> subset
[1] 0.4
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237686 173.0 5709258 305 5709258 305.0
Vcells 17390612 132.7 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 100000+0.4 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.073593 | 0.0736945 | 0.0746640 | 0.0737765 | 0.0738880 | 0.138898 |
1 | mean2 | 0.114935 | 0.1150195 | 0.1155257 | 0.1150885 | 0.1152495 | 0.142700 |
4 | mean.default+[() | 0.138086 | 0.1407560 | 0.1420396 | 0.1415605 | 0.1423410 | 0.167275 |
3 | mean+[() | 0.140265 | 0.1436130 | 0.1453005 | 0.1443560 | 0.1456825 | 0.170358 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.561765 | 1.560761 | 1.547274 | 1.559962 | 1.559786 | 1.027373 |
4 | mean.default+[() | 1.876347 | 1.909993 | 1.902384 | 1.918775 | 1.926443 | 1.204301 |
3 | mean+[() | 1.905956 | 1.948761 | 1.946058 | 1.956666 | 1.971667 | 1.226497 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 100000+0.4 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 100000"]]
> subset
[1] 0.8
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237767 173.0 5709258 305 5709258 305.0
Vcells 17410666 132.9 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 100000+0.8 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.145511 | 0.1456025 | 0.1536907 | 0.1458415 | 0.1471675 | 0.378968 |
1 | mean2 | 0.227776 | 0.2279420 | 0.2312377 | 0.2281725 | 0.2289890 | 0.357522 |
4 | mean.default+[() | 0.258598 | 0.2767635 | 0.3536514 | 0.2889915 | 0.4310290 | 0.728359 |
3 | mean+[() | 0.261920 | 0.2794995 | 0.3521816 | 0.2892785 | 0.4352335 | 0.489634 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
1 | mean2 | 1.565352 | 1.565509 | 1.504566 | 1.564524 | 1.555975 | 0.9434095 |
4 | mean.default+[() | 1.777171 | 1.900816 | 2.301059 | 1.981545 | 2.928833 | 1.9219538 |
3 | mean+[() | 1.800001 | 1.919606 | 2.291496 | 1.983513 | 2.957402 | 1.2920194 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 100000+0.8 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237780 173.0 5709258 305 5709258 305.0
Vcells 17410239 132.9 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, refine = TRUE), mean2_no_refine = mean2(x, refine = FALSE),
+ mean = mean(x), mean.default = mean.default(x), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 1000000+all data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.026754 | 1.051454 | 1.056996 | 1.053252 | 1.058614 | 1.114728 |
4 | mean.default | 1.553472 | 1.594251 | 1.610358 | 1.597915 | 1.606791 | 2.191001 |
3 | mean | 1.578921 | 1.608677 | 1.617133 | 1.614062 | 1.619892 | 1.758759 |
1 | mean2 | 2.074304 | 2.097707 | 2.106379 | 2.104033 | 2.109192 | 2.167240 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
4 | mean.default | 1.512993 | 1.516235 | 1.523522 | 1.517125 | 1.517825 | 1.965503 |
3 | mean | 1.537779 | 1.529955 | 1.529932 | 1.532455 | 1.530201 | 1.577747 |
1 | mean2 | 2.020254 | 1.995054 | 1.992797 | 1.997654 | 1.992409 | 1.944187 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 1000000+all data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000000"]]
> subset
[1] 0.2
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3237929 173.0 5709258 305 5709258 305.0
Vcells 17470772 133.3 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000000+0.2 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.478477 | 0.590530 | 0.6289313 | 0.6343935 | 0.6685945 | 0.977233 |
1 | mean2 | 0.837596 | 1.017808 | 1.0559042 | 1.0646500 | 1.1080095 | 1.224932 |
4 | mean.default+[() | 0.889853 | 1.505241 | 1.6474787 | 1.5413070 | 1.5781900 | 14.127943 |
3 | mean+[() | 0.893893 | 1.522968 | 1.6783895 | 1.5526815 | 1.5994640 | 13.921335 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.00000 |
1 | mean2 | 1.750546 | 1.723550 | 1.678886 | 1.678217 | 1.657222 | 1.25347 |
4 | mean.default+[() | 1.859761 | 2.548966 | 2.619489 | 2.429576 | 2.360459 | 14.45709 |
3 | mean+[() | 1.868205 | 2.578986 | 2.668637 | 2.447505 | 2.392278 | 14.24567 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000000+0.2 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000000"]]
> subset
[1] 0.4
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3238010 173.0 5709258 305 5709258 305.0
Vcells 17570828 134.1 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000000+0.4 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 0.812045 | 0.8609835 | 0.9198856 | 0.9050885 | 0.9483435 | 1.443393 |
1 | mean2 | 1.303331 | 1.3698990 | 1.4474710 | 1.4304645 | 1.4754555 | 2.345792 |
4 | mean.default+[() | 1.633059 | 2.3182440 | 2.7593362 | 2.3722785 | 2.4915760 | 13.780499 |
3 | mean+[() | 1.970608 | 2.3483825 | 2.5528565 | 2.4054115 | 2.4512435 | 13.615577 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.604998 | 1.591086 | 1.573534 | 1.580469 | 1.555824 | 1.625193 |
4 | mean.default+[() | 2.011045 | 2.692553 | 2.999651 | 2.621046 | 2.627293 | 9.547295 |
3 | mean+[() | 2.426723 | 2.727558 | 2.775189 | 2.657653 | 2.584763 | 9.433035 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000000+0.4 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 1000000"]]
> subset
[1] 0.8
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3238091 173.0 5709258 305 5709258 305.0
Vcells 17770882 135.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000000+0.8 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.492015 | 1.505714 | 1.553038 | 1.527435 | 1.542582 | 1.869643 |
1 | mean2 | 2.343350 | 2.363042 | 2.444962 | 2.396588 | 2.426274 | 3.024941 |
3 | mean+[() | 2.847850 | 4.294592 | 5.083393 | 4.362610 | 4.468501 | 16.288315 |
4 | mean.default+[() | 2.837037 | 4.305288 | 4.652314 | 4.422275 | 4.497725 | 14.846236 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.570594 | 1.569383 | 1.574310 | 1.569028 | 1.572865 | 1.617924 |
3 | mean+[() | 1.908727 | 2.852196 | 3.273194 | 2.856167 | 2.896766 | 8.711992 |
4 | mean.default+[() | 1.901480 | 2.859300 | 2.995622 | 2.895230 | 2.915712 | 7.940680 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 1000000+0.8 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3238104 173.0 5709258 305 5709258 305.0
Vcells 17770455 135.6 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, refine = TRUE), mean2_no_refine = mean2(x, refine = FALSE),
+ mean = mean(x), mean.default = mean.default(x), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 10000000+all data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 9.843419 | 10.50587 | 10.50763 | 10.51808 | 10.53710 | 12.21150 |
4 | mean.default | 15.060048 | 15.96673 | 16.00241 | 15.97704 | 15.99398 | 16.90293 |
3 | mean | 15.642657 | 15.98317 | 16.02730 | 15.99309 | 16.00777 | 18.10020 |
1 | mean2 | 19.696074 | 20.95110 | 20.95150 | 21.02333 | 21.04277 | 21.73061 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
4 | mean.default | 1.529961 | 1.519791 | 1.522933 | 1.519008 | 1.517873 | 1.384181 |
3 | mean | 1.589149 | 1.521356 | 1.525301 | 1.520533 | 1.519181 | 1.482226 |
1 | mean2 | 2.000938 | 1.994228 | 1.993933 | 1.998781 | 1.997016 | 1.779520 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean() and mean.default() on n = 10000000+all data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000000"]]
> subset
[1] 0.2
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3238253 173.0 5709258 305 5709258 305.0
Vcells 18372857 140.2 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000000+0.2 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 6.369286 | 6.667874 | 6.829916 | 6.825528 | 6.937186 | 7.48577 |
1 | mean2 | 11.112320 | 11.645808 | 11.874461 | 11.771455 | 11.946345 | 15.70384 |
4 | mean.default+[() | 10.565307 | 16.034094 | 18.237393 | 16.562583 | 17.300082 | 30.12160 |
3 | mean+[() | 12.679728 | 16.201599 | 17.512428 | 16.699506 | 17.161988 | 28.88841 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.744673 | 1.746555 | 1.738595 | 1.724622 | 1.722074 | 2.097826 |
4 | mean.default+[() | 1.658790 | 2.404679 | 2.670222 | 2.426564 | 2.493819 | 4.023848 |
3 | mean+[() | 1.990761 | 2.429800 | 2.564077 | 2.446625 | 2.473912 | 3.859110 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000000+0.2 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000000"]]
> subset
[1] 0.4
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3238325 173.0 5709258 305 5709258 305.0
Vcells 19372898 147.9 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000000+0.4 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 8.65734 | 8.711063 | 8.969746 | 8.755019 | 9.03013 | 10.30212 |
1 | mean2 | 14.24664 | 14.307604 | 14.694644 | 14.346621 | 14.68712 | 19.78128 |
3 | mean+[() | 16.96485 | 23.945018 | 34.132319 | 25.419415 | 35.89771 | 289.60112 |
4 | mean.default+[() | 23.77888 | 24.251441 | 31.447632 | 25.419867 | 35.32692 | 287.64227 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.645614 | 1.642464 | 1.638245 | 1.638674 | 1.626457 | 1.920117 |
3 | mean+[() | 1.959591 | 2.748806 | 3.805271 | 2.903411 | 3.975326 | 28.110823 |
4 | mean.default+[() | 2.746673 | 2.783982 | 3.505967 | 2.903462 | 3.912116 | 27.920682 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000000+0.4 data. Outliers are displayed as crosses. Times are in milliseconds.
> x <- data[["n = 10000000"]]
> subset
[1] 0.8
> idxs <- sort(sample(length(x), size = subset * length(x), replace = FALSE))
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3238412 173.0 5709258 305 5709258 305.0
Vcells 21372962 163.1 37485149 286 87357391 666.5
> stats <- microbenchmark(mean2 = mean2(x, idxs = idxs, refine = TRUE), mean2_no_refine = mean2(x,
+ idxs = idxs, refine = FALSE), `mean+[()` = mean2_R_v1(x, idxs = idxs), `mean.default+[()` = mean2_R_v2(x,
+ idxs = idxs), unit = "ms")
Table: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000000+0.8 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 15.08422 | 15.27005 | 15.88685 | 15.88614 | 16.36884 | 18.64600 |
1 | mean2 | 23.90745 | 24.43465 | 25.22848 | 25.28174 | 25.91634 | 26.79744 |
3 | mean+[() | 37.11935 | 44.55973 | 63.80948 | 53.92368 | 59.40594 | 312.33525 |
4 | mean.default+[() | 30.28500 | 44.12684 | 74.11212 | 53.98984 | 66.86120 | 312.48600 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | mean2_no_refine | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | mean2 | 1.584931 | 1.600168 | 1.588010 | 1.591434 | 1.583272 | 1.437168 |
3 | mean+[() | 2.460807 | 2.918112 | 4.016497 | 3.394385 | 3.629208 | 16.750788 |
4 | mean.default+[() | 2.007727 | 2.889763 | 4.664998 | 3.398550 | 4.084663 | 16.758873 |
Figure: Benchmarking of mean2(), mean2_no_refine(), mean+[()() and mean.default+[()() on double+n = 10000000+0.8 data. Outliers are displayed as crosses. Times are in milliseconds.
R version 3.6.1 Patched (2019-08-27 r77078)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.3 LTS
Matrix products: default
BLAS: /home/hb/software/R-devel/R-3-6-branch/lib/R/lib/libRblas.so
LAPACK: /home/hb/software/R-devel/R-3-6-branch/lib/R/lib/libRlapack.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] microbenchmark_1.4-6 matrixStats_0.55.0-9000 ggplot2_3.2.1
[4] knitr_1.24 R.devices_2.16.0 R.utils_2.9.0
[7] R.oo_1.22.0 R.methodsS3_1.7.1 history_0.0.0-9002
loaded via a namespace (and not attached):
[1] Biobase_2.45.0 bit64_0.9-7 splines_3.6.1
[4] network_1.15 assertthat_0.2.1 highr_0.8
[7] stats4_3.6.1 blob_1.2.0 robustbase_0.93-5
[10] pillar_1.4.2 RSQLite_2.1.2 backports_1.1.4
[13] lattice_0.20-38 glue_1.3.1 digest_0.6.20
[16] colorspace_1.4-1 sandwich_2.5-1 Matrix_1.2-17
[19] XML_3.98-1.20 lpSolve_5.6.13.3 pkgconfig_2.0.2
[22] genefilter_1.66.0 purrr_0.3.2 ergm_3.10.4
[25] xtable_1.8-4 mvtnorm_1.0-11 scales_1.0.0
[28] tibble_2.1.3 annotate_1.62.0 IRanges_2.18.2
[31] TH.data_1.0-10 withr_2.1.2 BiocGenerics_0.30.0
[34] lazyeval_0.2.2 mime_0.7 survival_2.44-1.1
[37] magrittr_1.5 crayon_1.3.4 statnet.common_4.3.0
[40] memoise_1.1.0 laeken_0.5.0 R.cache_0.13.0
[43] MASS_7.3-51.4 R.rsp_0.43.1 tools_3.6.1
[46] multcomp_1.4-10 S4Vectors_0.22.1 trust_0.1-7
[49] munsell_0.5.0 AnnotationDbi_1.46.1 compiler_3.6.1
[52] rlang_0.4.0 grid_3.6.1 RCurl_1.95-4.12
[55] cwhmisc_6.6 rappdirs_0.3.1 labeling_0.3
[58] bitops_1.0-6 base64enc_0.1-3 boot_1.3-23
[61] gtable_0.3.0 codetools_0.2-16 DBI_1.0.0
[64] markdown_1.1 R6_2.4.0 zoo_1.8-6
[67] dplyr_0.8.3 bit_1.1-14 zeallot_0.1.0
[70] parallel_3.6.1 Rcpp_1.0.2 vctrs_0.2.0
[73] DEoptimR_1.0-8 tidyselect_0.2.5 xfun_0.9
[76] coda_0.19-3
Total processing time was 1.91 mins.
To reproduce this report, do:
html <- matrixStats:::benchmark('mean2')
Copyright Henrik Bengtsson. Last updated on 2019-09-10 21:08:46 (-0700 UTC). Powered by RSP.
<script> var link = document.createElement('link'); link.rel = 'icon'; link.href = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAA21BMVEUAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8BAf4CAv0DA/wdHeIeHuEfH+AgIN8hId4lJdomJtknJ9g+PsE/P8BAQL9yco10dIt1dYp3d4h4eIeVlWqWlmmXl2iYmGeZmWabm2Tn5xjo6Bfp6Rb39wj4+Af//wA2M9hbAAAASXRSTlMAAQIJCgsMJSYnKD4/QGRlZmhpamtsbautrrCxuru8y8zN5ebn6Pn6+///////////////////////////////////////////LsUNcQAAAS9JREFUOI29k21XgkAQhVcFytdSMqMETU26UVqGmpaiFbL//xc1cAhhwVNf6n5i5z67M2dmYOyfJZUqlVLhkKucG7cgmUZTybDz6g0iDeq51PUr37Ds2cy2/C9NeES5puDjxuUk1xnToZsg8pfA3avHQ3lLIi7iWRrkv/OYtkScxBIMgDee0ALoyxHQBJ68JLCjOtQIMIANF7QG9G9fNnHvisCHBVMKgSJgiz7nE+AoBKrAPA3MgepvgR9TSCasrCKH0eB1wBGBFdCO+nAGjMVGPcQb5bd6mQRegN6+1axOs9nGfYcCtfi4NQosdtH7dB+txFIpXQqN1p9B/asRHToyS0jRgpV7nk4nwcq1BJ+x3Gl/v7S9Wmpp/aGquum7w3ZDyrADFYrl8vHBH+ev9AUASW1dmU4h4wAAAABJRU5ErkJggg==" document.getElementsByTagName('head')[0].appendChild(link); </script>