This report benchmark the performance of allocVector() against alternative methods.
where
> allocVector_R1 <- function(length, value = NA) {
+ x <- vector(mode = typeof(value), length = length)
+ if (!is.finite(value) || value != 0)
+ x[] <- value
+ x
+ }
> allocVector_R2 <- function(length, value = NA) {
+ x <- matrix(data = value, nrow = length, ncol = 1L)
+ as.vector(x)
+ }
> 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)
> values <- list(zero = 0, one = 1, `NA` = NA_real_)
> if (mode != "double")
+ values <- lapply(values, FUN = function(x) {
+ storage.mode(x) <- mode
+ x
+ })
> n <- length(data[["n = 1000"]])
> str(value)
int 0
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000+0 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.001207 | 0.0015755 | 0.0024554 | 0.0017380 | 0.0019005 | 0.070186 |
2 | rep | 0.002024 | 0.0022360 | 0.0024954 | 0.0023425 | 0.0024865 | 0.009744 |
3 | allocVector_R1 | 0.002680 | 0.0030830 | 0.0035664 | 0.0033290 | 0.0035985 | 0.017822 |
4 | allocVector_R2 | 0.004625 | 0.0050665 | 0.0055169 | 0.0052575 | 0.0055825 | 0.020414 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | rep | 1.676885 | 1.419232 | 1.016286 | 1.347814 | 1.308340 | 0.1388311 |
3 | allocVector_R1 | 2.220381 | 1.956839 | 1.452458 | 1.915420 | 1.893449 | 0.2539253 |
4 | allocVector_R2 | 3.831814 | 3.215804 | 2.246833 | 3.025029 | 2.937385 | 0.2908557 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000+0 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 1000"]])
> str(value)
int 1
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000+1 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.001494 | 0.0018995 | 0.0021898 | 0.0020030 | 0.0022105 | 0.009982 |
2 | rep | 0.002167 | 0.0023285 | 0.0026053 | 0.0025065 | 0.0026485 | 0.008874 |
4 | allocVector_R2 | 0.004711 | 0.0052180 | 0.0059140 | 0.0055500 | 0.0059060 | 0.033372 |
3 | allocVector_R1 | 0.006308 | 0.0068715 | 0.0073591 | 0.0071210 | 0.0075000 | 0.021515 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | rep | 1.450468 | 1.225849 | 1.189758 | 1.251373 | 1.198145 | 0.8890002 |
4 | allocVector_R2 | 3.153280 | 2.747039 | 2.700697 | 2.770844 | 2.671794 | 3.3432178 |
3 | allocVector_R1 | 4.222222 | 3.617531 | 3.360637 | 3.555167 | 3.392898 | 2.1553797 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000+1 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 1000"]])
> str(value)
int NA
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000+NA data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.001601 | 0.0018860 | 0.0022406 | 0.002098 | 0.0023700 | 0.009687 |
2 | rep | 0.002125 | 0.0022880 | 0.0026007 | 0.002435 | 0.0025570 | 0.015160 |
4 | allocVector_R2 | 0.004699 | 0.0051900 | 0.0057627 | 0.005567 | 0.0059280 | 0.016872 |
3 | allocVector_R1 | 0.006213 | 0.0067775 | 0.0073564 | 0.006959 | 0.0072925 | 0.035589 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | rep | 1.327295 | 1.213150 | 1.160740 | 1.160629 | 1.078903 | 1.564984 |
4 | allocVector_R2 | 2.935041 | 2.751856 | 2.571993 | 2.653479 | 2.501266 | 1.741716 |
3 | allocVector_R1 | 3.880700 | 3.593584 | 3.283294 | 3.316969 | 3.077004 | 3.673893 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000+NA data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000"]])
> str(value)
int 0
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000+0 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.003097 | 0.0036030 | 0.0039692 | 0.0037665 | 0.0040225 | 0.011831 |
3 | allocVector_R1 | 0.004596 | 0.0051095 | 0.0055898 | 0.0054600 | 0.0058380 | 0.014070 |
4 | allocVector_R2 | 0.012145 | 0.0134350 | 0.0145650 | 0.0139685 | 0.0146185 | 0.046007 |
2 | rep | 0.016329 | 0.0164995 | 0.0167631 | 0.0166105 | 0.0167380 | 0.023181 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
3 | allocVector_R1 | 1.484017 | 1.418124 | 1.408302 | 1.449622 | 1.451336 | 1.189249 |
4 | allocVector_R2 | 3.921537 | 3.728837 | 3.669525 | 3.708615 | 3.634183 | 3.888682 |
2 | rep | 5.272522 | 4.579378 | 4.223321 | 4.410062 | 4.161094 | 1.959344 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000+0 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000"]])
> str(value)
int 1
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000+1 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.006589 | 0.0071495 | 0.0076573 | 0.0073930 | 0.0077470 | 0.018073 |
4 | allocVector_R2 | 0.012832 | 0.0139145 | 0.0146466 | 0.0144695 | 0.0150000 | 0.027984 |
2 | rep | 0.015819 | 0.0165415 | 0.0167551 | 0.0166530 | 0.0167985 | 0.022610 |
3 | allocVector_R1 | 0.030526 | 0.0319380 | 0.0325804 | 0.0323585 | 0.0327435 | 0.045655 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
4 | allocVector_R2 | 1.947488 | 1.946220 | 1.912753 | 1.957189 | 1.936233 | 1.548387 |
2 | rep | 2.400819 | 2.313658 | 2.188110 | 2.252536 | 2.168388 | 1.251038 |
3 | allocVector_R1 | 4.632873 | 4.467166 | 4.254805 | 4.376911 | 4.226604 | 2.526144 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000+1 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000"]])
> str(value)
int NA
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000+NA data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.006206 | 0.0069575 | 0.0073615 | 0.0072990 | 0.0075975 | 0.014405 |
4 | allocVector_R2 | 0.011756 | 0.0138505 | 0.0150380 | 0.0143845 | 0.0149755 | 0.044435 |
2 | rep | 0.015812 | 0.0165340 | 0.0167107 | 0.0166510 | 0.0167925 | 0.020548 |
3 | allocVector_R1 | 0.030063 | 0.0319225 | 0.0323812 | 0.0322610 | 0.0326025 | 0.044110 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
4 | allocVector_R2 | 1.894296 | 1.990729 | 2.042782 | 1.970749 | 1.971109 | 3.084693 |
2 | rep | 2.547857 | 2.376428 | 2.269999 | 2.281271 | 2.210266 | 1.426449 |
3 | allocVector_R1 | 4.844183 | 4.588214 | 4.398700 | 4.419920 | 4.291214 | 3.062131 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000+NA data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 100000"]])
> str(value)
int 0
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 100000+0 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.017219 | 0.0200070 | 0.0759101 | 0.0227995 | 0.1609475 | 0.205651 |
3 | allocVector_R1 | 0.018154 | 0.0212425 | 0.0719590 | 0.0241340 | 0.1597315 | 0.233512 |
4 | allocVector_R2 | 0.073308 | 0.0864205 | 0.2441712 | 0.0978160 | 0.3415975 | 5.458121 |
2 | rep | 0.126543 | 0.1362765 | 0.2448996 | 0.1584245 | 0.2594165 | 5.544453 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.0000000 | 1.000000 |
3 | allocVector_R1 | 1.054301 | 1.061753 | 0.9479505 | 1.058532 | 0.9924447 | 1.135477 |
4 | allocVector_R2 | 4.257390 | 4.319513 | 3.2165851 | 4.290269 | 2.1224157 | 26.540698 |
2 | rep | 7.349033 | 6.811441 | 3.2261800 | 6.948595 | 1.6118082 | 26.960496 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 100000+0 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 100000"]])
> str(value)
int 1
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 100000+1 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.043335 | 0.0456530 | 0.1437595 | 0.0517275 | 0.1675860 | 5.353385 |
4 | allocVector_R2 | 0.069954 | 0.0774700 | 0.2085445 | 0.0855720 | 0.3296740 | 5.208113 |
2 | rep | 0.122660 | 0.1270560 | 0.1738057 | 0.1463460 | 0.2482715 | 0.306157 |
3 | allocVector_R1 | 0.214804 | 0.2252585 | 0.3433585 | 0.2660250 | 0.4863515 | 0.592387 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
4 | allocVector_R2 | 1.614261 | 1.696931 | 1.450649 | 1.654284 | 1.967193 | 0.9728635 |
2 | rep | 2.830506 | 2.783081 | 1.209003 | 2.829172 | 1.481457 | 0.0571894 |
3 | allocVector_R1 | 4.956825 | 4.934145 | 2.388423 | 5.142816 | 2.902101 | 0.1106565 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 100000+1 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 100000"]])
> str(value)
int NA
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 100000+NA data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.042508 | 0.0449285 | 0.0811267 | 0.0481785 | 0.1560825 | 0.199457 |
4 | allocVector_R2 | 0.071047 | 0.0784890 | 0.1667413 | 0.0899735 | 0.3270300 | 0.387363 |
2 | rep | 0.122501 | 0.1268385 | 0.2188964 | 0.1407625 | 0.1653190 | 5.556213 |
3 | allocVector_R1 | 0.214654 | 0.2226760 | 0.3780174 | 0.2542545 | 0.4858145 | 5.622163 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
4 | allocVector_R2 | 1.671380 | 1.746976 | 2.055319 | 1.867503 | 2.095238 | 1.942088 |
2 | rep | 2.881834 | 2.823119 | 2.698203 | 2.921687 | 1.059177 | 27.856696 |
3 | allocVector_R1 | 5.049732 | 4.956231 | 4.659590 | 5.277344 | 3.112550 | 28.187344 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 100000+NA data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 1000000"]])
> str(value)
int 0
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000000+0 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.161781 | 0.1808590 | 0.6202326 | 0.1942385 | 0.208862 | 6.246709 |
3 | allocVector_R1 | 0.170806 | 0.1900815 | 0.5925710 | 0.2023540 | 0.232190 | 4.052854 |
4 | allocVector_R2 | 0.839776 | 0.9285695 | 1.5797688 | 0.9736050 | 1.024361 | 6.547366 |
2 | rep | 1.257761 | 1.3129645 | 1.8984884 | 1.3857345 | 1.463321 | 7.256379 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
3 | allocVector_R1 | 1.055785 | 1.050993 | 0.9554013 | 1.041781 | 1.111691 | 0.6487983 |
4 | allocVector_R2 | 5.190820 | 5.134218 | 2.5470585 | 5.012420 | 4.904490 | 1.0481305 |
2 | rep | 7.774467 | 7.259603 | 3.0609296 | 7.134191 | 7.006164 | 1.1616323 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000000+0 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 1000000"]])
> str(value)
int 1
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000000+1 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.408741 | 0.428375 | 4.308654 | 0.4384040 | 0.528319 | 333.321278 |
4 | allocVector_R2 | 0.820420 | 0.872034 | 1.700392 | 0.9274495 | 3.033707 | 6.748338 |
2 | rep | 1.144560 | 1.225901 | 1.559570 | 1.2619730 | 1.305289 | 6.854616 |
3 | allocVector_R1 | 2.082066 | 2.208751 | 3.002041 | 2.2696910 | 2.731126 | 7.881858 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
4 | allocVector_R2 | 2.007188 | 2.035679 | 0.3946458 | 2.115513 | 5.742187 | 0.0202457 |
2 | rep | 2.800208 | 2.861746 | 0.3619622 | 2.878562 | 2.470646 | 0.0205646 |
3 | allocVector_R1 | 5.093852 | 5.156117 | 0.6967469 | 5.177168 | 5.169463 | 0.0236464 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000000+1 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 1000000"]])
> str(value)
int NA
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000000+NA data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.413900 | 0.432972 | 0.9158277 | 0.442799 | 0.5179325 | 6.271777 |
4 | allocVector_R2 | 0.820146 | 0.877243 | 1.6536557 | 0.933258 | 1.3049465 | 6.882525 |
2 | rep | 1.179737 | 1.223618 | 1.5982229 | 1.262436 | 1.3497245 | 7.009429 |
3 | allocVector_R1 | 2.131479 | 2.217995 | 3.1299068 | 2.279055 | 3.2363245 | 8.883135 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
4 | allocVector_R2 | 1.981508 | 2.026096 | 1.805640 | 2.107633 | 2.519530 | 1.097380 |
2 | rep | 2.850295 | 2.826091 | 1.745113 | 2.851036 | 2.605985 | 1.117614 |
3 | allocVector_R1 | 5.149744 | 5.122720 | 3.417572 | 5.146929 | 6.248545 | 1.416367 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 1000000+NA data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000000"]])
> str(value)
int 0
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000000+0 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
3 | allocVector_R1 | 12.48484 | 12.87243 | 16.07658 | 13.38199 | 20.99177 | 24.23849 |
1 | allocVector | 12.46579 | 12.89216 | 20.49525 | 15.28668 | 21.44455 | 344.06724 |
2 | rep | 20.30834 | 20.78174 | 35.41318 | 24.65478 | 29.38401 | 383.14429 |
4 | allocVector_R2 | 29.53574 | 34.97074 | 36.49151 | 37.35883 | 38.83788 | 45.86025 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
3 | allocVector_R1 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | allocVector | 0.9984744 | 1.001533 | 1.274851 | 1.142332 | 1.021570 | 14.195078 |
2 | rep | 1.6266410 | 1.614438 | 2.202780 | 1.842385 | 1.399788 | 15.807269 |
4 | allocVector_R2 | 2.3657296 | 2.716717 | 2.269855 | 2.791724 | 1.850148 | 1.892043 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000000+0 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000000"]])
> str(value)
int 1
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000000+1 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 13.19570 | 14.10907 | 32.13831 | 16.68228 | 22.69588 | 390.66040 |
2 | rep | 20.22937 | 21.27525 | 26.23988 | 26.99304 | 30.48453 | 35.37265 |
4 | allocVector_R2 | 29.60304 | 38.12044 | 43.35905 | 39.91478 | 42.12181 | 377.14408 |
3 | allocVector_R1 | 40.16599 | 49.48983 | 62.32039 | 51.47486 | 55.76479 | 397.89815 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | rep | 1.533027 | 1.507913 | 0.8164672 | 1.618067 | 1.343174 | 0.0905458 |
4 | allocVector_R2 | 2.243386 | 2.701840 | 1.3491389 | 2.392646 | 1.855923 | 0.9654013 |
3 | allocVector_R1 | 3.043870 | 3.507662 | 1.9391307 | 3.085602 | 2.457044 | 1.0185270 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000000+1 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000000"]])
> str(value)
int NA
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000000+NA data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 13.14410 | 16.99748 | 25.64399 | 21.39350 | 26.83883 | 379.44009 |
2 | rep | 20.42353 | 25.48343 | 44.73435 | 28.64958 | 34.08759 | 415.55887 |
4 | allocVector_R2 | 31.17431 | 40.19437 | 45.05834 | 44.76693 | 50.02818 | 63.26161 |
3 | allocVector_R1 | 45.79004 | 54.37136 | 73.01122 | 60.67593 | 67.26059 | 423.91220 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | rep | 1.553817 | 1.499247 | 1.744438 | 1.339172 | 1.270085 | 1.0951897 |
4 | allocVector_R2 | 2.371733 | 2.364725 | 1.757072 | 2.092548 | 1.864023 | 0.1667236 |
3 | allocVector_R1 | 3.483695 | 3.198790 | 2.847108 | 2.836186 | 2.506093 | 1.1172045 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on integer+n = 10000000+NA 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)
> values <- list(zero = 0, one = 1, `NA` = NA_real_)
> if (mode != "double")
+ values <- lapply(values, FUN = function(x) {
+ storage.mode(x) <- mode
+ x
+ })
> n <- length(data[["n = 1000"]])
> str(value)
num 0
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000+0 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.001259 | 0.0014825 | 0.0023722 | 0.0017395 | 0.0029765 | 0.021729 |
2 | rep | 0.001810 | 0.0019070 | 0.0026352 | 0.0021055 | 0.0034560 | 0.006048 |
3 | allocVector_R1 | 0.002546 | 0.0029835 | 0.0045033 | 0.0033035 | 0.0063625 | 0.016274 |
4 | allocVector_R2 | 0.004289 | 0.0048775 | 0.0072078 | 0.0051745 | 0.0101200 | 0.026711 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | rep | 1.437649 | 1.286341 | 1.110840 | 1.210405 | 1.161095 | 0.2783377 |
3 | allocVector_R1 | 2.022240 | 2.012479 | 1.898337 | 1.899109 | 2.137578 | 0.7489530 |
4 | allocVector_R2 | 3.406672 | 3.290051 | 3.038403 | 2.974705 | 3.399966 | 1.2292788 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000+0 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 1000"]])
> str(value)
num 1
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000+1 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.001422 | 0.001743 | 0.0021571 | 0.0018840 | 0.0021275 | 0.014491 |
2 | rep | 0.001687 | 0.001808 | 0.0020665 | 0.0019280 | 0.0020655 | 0.004987 |
4 | allocVector_R2 | 0.004030 | 0.004550 | 0.0056235 | 0.0047575 | 0.0050425 | 0.045010 |
3 | allocVector_R1 | 0.005145 | 0.005460 | 0.0064151 | 0.0057040 | 0.0060510 | 0.024704 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.0000000 | 1.0000000 |
2 | rep | 1.186357 | 1.037292 | 0.9579905 | 1.023355 | 0.9708578 | 0.3441446 |
4 | allocVector_R2 | 2.834037 | 2.610442 | 2.6069129 | 2.525212 | 2.3701528 | 3.1060658 |
3 | allocVector_R1 | 3.618143 | 3.132530 | 2.9738820 | 3.027601 | 2.8441833 | 1.7047823 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000+1 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 1000"]])
> str(value)
num NA
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000+NA data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | rep | 0.002137 | 0.002257 | 0.0025928 | 0.0023560 | 0.0025325 | 0.015994 |
1 | allocVector | 0.001857 | 0.002189 | 0.0025469 | 0.0023780 | 0.0025890 | 0.016976 |
4 | allocVector_R2 | 0.005103 | 0.005568 | 0.0061317 | 0.0058410 | 0.0062185 | 0.025025 |
3 | allocVector_R1 | 0.006296 | 0.006648 | 0.0072987 | 0.0068505 | 0.0071515 | 0.041025 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
2 | rep | 1.0000000 | 1.0000000 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 |
1 | allocVector | 0.8689752 | 0.9698715 | 0.9822627 | 1.009338 | 1.022310 | 1.061398 |
4 | allocVector_R2 | 2.3879270 | 2.4669916 | 2.3648663 | 2.479202 | 2.455479 | 1.564649 |
3 | allocVector_R1 | 2.9461862 | 2.9455029 | 2.8149327 | 2.907682 | 2.823889 | 2.565024 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000+NA data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000"]])
> str(value)
num 0
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000+0 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.005278 | 0.0059925 | 0.0071286 | 0.0063065 | 0.0076170 | 0.022418 |
3 | allocVector_R1 | 0.007145 | 0.0082195 | 0.0096153 | 0.0092150 | 0.0104980 | 0.016950 |
2 | rep | 0.016506 | 0.0168900 | 0.0194588 | 0.0171165 | 0.0207635 | 0.048388 |
4 | allocVector_R2 | 0.018069 | 0.0223440 | 0.0245975 | 0.0235805 | 0.0263385 | 0.042436 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
3 | allocVector_R1 | 1.353733 | 1.371631 | 1.348826 | 1.461191 | 1.378233 | 0.7560889 |
2 | rep | 3.127321 | 2.818523 | 2.729672 | 2.714104 | 2.725942 | 2.1584441 |
4 | allocVector_R2 | 3.423456 | 3.728661 | 3.450517 | 3.739079 | 3.457857 | 1.8929432 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000+0 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000"]])
> str(value)
num 1
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000+1 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.008135 | 0.0089675 | 0.0099416 | 0.0094730 | 0.0105050 | 0.016818 |
2 | rep | 0.016543 | 0.0167100 | 0.0171143 | 0.0168565 | 0.0171865 | 0.024020 |
4 | allocVector_R2 | 0.017665 | 0.0190135 | 0.0207219 | 0.0195470 | 0.0226105 | 0.037304 |
3 | allocVector_R1 | 0.031283 | 0.0319630 | 0.0336748 | 0.0323975 | 0.0333210 | 0.064274 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | rep | 2.033559 | 1.863396 | 1.721486 | 1.779426 | 1.636030 | 1.428232 |
4 | allocVector_R2 | 2.171481 | 2.120268 | 2.084357 | 2.063443 | 2.152356 | 2.218100 |
3 | allocVector_R1 | 3.845483 | 3.564316 | 3.387263 | 3.419983 | 3.171918 | 3.821739 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000+1 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000"]])
> str(value)
num NA
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000+NA data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.007814 | 0.0088285 | 0.0100072 | 0.0092185 | 0.0099435 | 0.041077 |
2 | rep | 0.015961 | 0.0166460 | 0.0170889 | 0.0168560 | 0.0171340 | 0.025815 |
4 | allocVector_R2 | 0.017514 | 0.0186930 | 0.0205903 | 0.0194995 | 0.0214825 | 0.040296 |
3 | allocVector_R1 | 0.029559 | 0.0314550 | 0.0322915 | 0.0320290 | 0.0325030 | 0.046611 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | rep | 2.042616 | 1.885485 | 1.707663 | 1.828497 | 1.723136 | 0.6284539 |
4 | allocVector_R2 | 2.241362 | 2.117347 | 2.057551 | 2.115257 | 2.160457 | 0.9809869 |
3 | allocVector_R1 | 3.782826 | 3.562893 | 3.226831 | 3.474426 | 3.268769 | 1.1347226 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000+NA data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 100000"]])
> str(value)
num 0
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 100000+0 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.032975 | 0.0445010 | 0.2552944 | 0.3371345 | 0.3607805 | 0.515925 |
3 | allocVector_R1 | 0.033665 | 0.0496920 | 0.2560893 | 0.3381810 | 0.3662975 | 0.474873 |
2 | rep | 0.126966 | 0.1615215 | 0.5220916 | 0.4098125 | 0.4410205 | 9.735218 |
4 | allocVector_R2 | 0.138870 | 0.1877330 | 0.5510740 | 0.6731745 | 0.7102845 | 0.884302 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
3 | allocVector_R1 | 1.020925 | 1.116649 | 1.003113 | 1.003104 | 1.015292 | 0.9204303 |
2 | rep | 3.850372 | 3.629615 | 2.045057 | 1.215576 | 1.222407 | 18.8694442 |
4 | allocVector_R2 | 4.211372 | 4.218624 | 2.158582 | 1.996754 | 1.968744 | 1.7140127 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 100000+0 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 100000"]])
> str(value)
num 1
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 100000+1 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.062230 | 0.0700165 | 0.1309885 | 0.0767860 | 0.1001945 | 0.445361 |
2 | rep | 0.119678 | 0.1283640 | 0.2241331 | 0.1420500 | 0.3334435 | 0.566131 |
4 | allocVector_R2 | 0.132306 | 0.1610060 | 0.3878265 | 0.1777770 | 0.3559725 | 4.469379 |
3 | allocVector_R1 | 0.211214 | 0.2219980 | 0.3977451 | 0.2336005 | 0.5315830 | 4.103197 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | rep | 1.923156 | 1.833339 | 1.711091 | 1.849947 | 3.327962 | 1.271173 |
4 | allocVector_R2 | 2.126081 | 2.299544 | 2.960769 | 2.315227 | 3.552815 | 10.035407 |
3 | allocVector_R1 | 3.394086 | 3.170653 | 3.036490 | 3.042228 | 5.305511 | 9.213193 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 100000+1 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 100000"]])
> str(value)
num NA
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 100000+NA data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.060898 | 0.0705405 | 0.3723784 | 0.2894075 | 0.3151010 | 8.264352 |
2 | rep | 0.127419 | 0.1590620 | 0.3073524 | 0.3701820 | 0.4051885 | 0.544962 |
3 | allocVector_R1 | 0.216292 | 0.2265175 | 0.5392802 | 0.5762815 | 0.6383735 | 7.983009 |
4 | allocVector_R2 | 0.129893 | 0.1579815 | 0.4931727 | 0.6243855 | 0.6631820 | 0.876573 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | rep | 2.092335 | 2.254903 | 0.8253765 | 1.279103 | 1.285900 | 0.0659413 |
3 | allocVector_R1 | 3.551709 | 3.211170 | 1.4482049 | 1.991246 | 2.025933 | 0.9659570 |
4 | allocVector_R2 | 2.132960 | 2.239586 | 1.3243860 | 2.157461 | 2.104665 | 0.1060668 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 100000+NA data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 1000000"]])
> str(value)
num 0
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000000+0 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
3 | allocVector_R1 | 0.321378 | 0.4081640 | 1.545236 | 0.4848415 | 3.088989 | 7.951424 |
1 | allocVector | 0.314506 | 0.3781115 | 1.726715 | 0.4936290 | 3.144486 | 9.375319 |
2 | rep | 1.193094 | 1.3386675 | 2.806585 | 1.6701390 | 3.652778 | 20.428340 |
4 | allocVector_R2 | 1.352299 | 1.5610275 | 4.029003 | 2.3514385 | 7.009819 | 10.039261 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
3 | allocVector_R1 | 1.0000000 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
1 | allocVector | 0.9786171 | 0.9263715 | 1.117444 | 1.018125 | 1.017966 | 1.179074 |
2 | rep | 3.7124321 | 3.2797295 | 1.816282 | 3.444711 | 1.182516 | 2.569142 |
4 | allocVector_R2 | 4.2078145 | 3.8245105 | 2.607371 | 4.849912 | 2.269293 | 1.262574 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000000+0 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 1000000"]])
> str(value)
num 1
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000000+1 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.640098 | 0.664248 | 1.514574 | 0.6993095 | 2.704990 | 9.212924 |
2 | rep | 1.155785 | 1.237724 | 2.213403 | 1.2760855 | 3.440713 | 12.252703 |
4 | allocVector_R2 | 1.335175 | 1.398490 | 6.586466 | 1.4785205 | 6.331370 | 329.164961 |
3 | allocVector_R1 | 2.105089 | 2.247377 | 3.778901 | 2.2781760 | 5.742554 | 10.931701 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | rep | 1.805638 | 1.863346 | 1.461403 | 1.824779 | 1.271987 | 1.329947 |
4 | allocVector_R2 | 2.085891 | 2.105373 | 4.348725 | 2.114258 | 2.340626 | 35.728609 |
3 | allocVector_R1 | 3.288698 | 3.383340 | 2.495025 | 3.257751 | 2.122948 | 1.186562 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000000+1 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 1000000"]])
> str(value)
num NA
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000000+NA data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 0.643766 | 0.6671845 | 1.318058 | 0.683923 | 0.788271 | 8.101824 |
2 | rep | 1.157254 | 1.2346510 | 1.660541 | 1.275901 | 1.361646 | 5.398941 |
4 | allocVector_R2 | 1.302117 | 1.3870670 | 2.476507 | 1.440087 | 2.239600 | 10.112007 |
3 | allocVector_R1 | 2.059051 | 2.2200330 | 2.681154 | 2.262782 | 2.441831 | 7.953408 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | rep | 1.797631 | 1.850539 | 1.259840 | 1.865562 | 1.727383 | 0.6663859 |
4 | allocVector_R2 | 2.022656 | 2.078986 | 1.878907 | 2.105627 | 2.841154 | 1.2481149 |
3 | allocVector_R1 | 3.198446 | 3.327465 | 2.034171 | 3.308533 | 3.097704 | 0.9816812 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 1000000+NA data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000000"]])
> str(value)
num 0
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000000+0 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 25.53924 | 26.31628 | 36.88158 | 29.63464 | 41.07488 | 409.94440 |
3 | allocVector_R1 | 25.22212 | 26.29911 | 40.92258 | 29.96420 | 42.05531 | 388.95371 |
2 | rep | 31.20185 | 32.24085 | 47.36722 | 42.58038 | 47.38334 | 384.88675 |
4 | allocVector_R2 | 56.96028 | 67.86871 | 71.98907 | 73.29372 | 76.68337 | 94.41727 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.0000000 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
3 | allocVector_R1 | 0.9875831 | 0.9993475 | 1.109567 | 1.011121 | 1.023869 | 0.9487962 |
2 | rep | 1.2217221 | 1.2251294 | 1.284306 | 1.436845 | 1.153584 | 0.9388755 |
4 | allocVector_R2 | 2.2303049 | 2.5789630 | 1.951898 | 2.473245 | 1.866916 | 0.2303172 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000000+0 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000000"]])
> str(value)
num 1
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000000+1 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 23.86580 | 24.80692 | 39.34795 | 30.88632 | 39.53323 | 383.2569 |
2 | rep | 31.15383 | 32.37567 | 44.60568 | 40.18790 | 47.33339 | 385.3664 |
3 | allocVector_R1 | 51.98065 | 63.37773 | 74.32429 | 67.24214 | 72.40544 | 411.2283 |
4 | allocVector_R2 | 56.99035 | 69.27100 | 80.79715 | 73.64805 | 79.10371 | 429.5774 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | rep | 1.305375 | 1.305106 | 1.133622 | 1.301155 | 1.197307 | 1.005504 |
3 | allocVector_R1 | 2.178040 | 2.554841 | 1.888899 | 2.177085 | 1.831508 | 1.072983 |
4 | allocVector_R2 | 2.387951 | 2.792406 | 2.053402 | 2.384488 | 2.000942 | 1.120860 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000000+1 data. Outliers are displayed as crosses. Times are in milliseconds.
> n <- length(data[["n = 10000000"]])
> str(value)
num NA
> stats <- microbenchmark(allocVector = allocVector(length = n, value = value), rep = rep(value, times = n),
+ allocVector_R1 = allocVector_R1(length = n, value = value), allocVector_R2 = allocVector_R2(length = n,
+ value = value), unit = "ms")
Table: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000000+NA data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 23.95989 | 25.90227 | 43.90854 | 31.04191 | 40.65225 | 387.8995 |
2 | rep | 31.63185 | 33.35264 | 45.92046 | 40.45574 | 49.01193 | 411.6979 |
3 | allocVector_R1 | 52.54272 | 64.85379 | 74.94758 | 68.04997 | 72.06090 | 416.6914 |
4 | allocVector_R2 | 57.28902 | 71.93656 | 79.57958 | 75.60285 | 80.23777 | 410.3189 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | allocVector | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | rep | 1.320200 | 1.287634 | 1.045821 | 1.303262 | 1.205639 | 1.061352 |
3 | allocVector_R1 | 2.192945 | 2.503788 | 1.706902 | 2.192197 | 1.772618 | 1.074225 |
4 | allocVector_R2 | 2.391038 | 2.777230 | 1.812394 | 2.435509 | 1.973760 | 1.057797 |
Figure: Benchmarking of allocVector(), rep(), allocVector_R1() and allocVector_R2() on double+n = 10000000+NA data. Outliers are displayed as crosses. Times are in milliseconds.
R version 4.1.1 Patched (2021-08-10 r80727)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.5 LTS
Matrix products: default
BLAS: /home/hb/software/R-devel/R-4-1-branch/lib/R/lib/libRblas.so
LAPACK: /home/hb/software/R-devel/R-4-1-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-7 matrixStats_0.60.0 ggplot2_3.3.5
[4] knitr_1.33 R.devices_2.17.0 R.utils_2.10.1
[7] R.oo_1.24.0 R.methodsS3_1.8.1-9001 history_0.0.1-9000
loaded via a namespace (and not attached):
[1] Biobase_2.52.0 httr_1.4.2 splines_4.1.1
[4] bit64_4.0.5 network_1.17.1 assertthat_0.2.1
[7] highr_0.9 stats4_4.1.1 blob_1.2.2
[10] GenomeInfoDbData_1.2.6 robustbase_0.93-8 pillar_1.6.2
[13] RSQLite_2.2.8 lattice_0.20-44 glue_1.4.2
[16] digest_0.6.27 XVector_0.32.0 colorspace_2.0-2
[19] Matrix_1.3-4 XML_3.99-0.7 pkgconfig_2.0.3
[22] zlibbioc_1.38.0 genefilter_1.74.0 purrr_0.3.4
[25] ergm_4.1.2 xtable_1.8-4 scales_1.1.1
[28] tibble_3.1.4 annotate_1.70.0 KEGGREST_1.32.0
[31] farver_2.1.0 generics_0.1.0 IRanges_2.26.0
[34] ellipsis_0.3.2 cachem_1.0.6 withr_2.4.2
[37] BiocGenerics_0.38.0 mime_0.11 survival_3.2-13
[40] magrittr_2.0.1 crayon_1.4.1 statnet.common_4.5.0
[43] memoise_2.0.0 laeken_0.5.1 fansi_0.5.0
[46] R.cache_0.15.0 MASS_7.3-54 R.rsp_0.44.0
[49] progressr_0.8.0 tools_4.1.1 lifecycle_1.0.0
[52] S4Vectors_0.30.0 trust_0.1-8 munsell_0.5.0
[55] tabby_0.0.1-9001 AnnotationDbi_1.54.1 Biostrings_2.60.2
[58] compiler_4.1.1 GenomeInfoDb_1.28.1 rlang_0.4.11
[61] grid_4.1.1 RCurl_1.98-1.4 cwhmisc_6.6
[64] rstudioapi_0.13 rappdirs_0.3.3 startup_0.15.0
[67] labeling_0.4.2 bitops_1.0-7 base64enc_0.1-3
[70] boot_1.3-28 gtable_0.3.0 DBI_1.1.1
[73] markdown_1.1 R6_2.5.1 lpSolveAPI_5.5.2.0-17.7
[76] rle_0.9.2 dplyr_1.0.7 fastmap_1.1.0
[79] bit_4.0.4 utf8_1.2.2 parallel_4.1.1
[82] Rcpp_1.0.7 vctrs_0.3.8 png_0.1-7
[85] DEoptimR_1.0-9 tidyselect_1.1.1 xfun_0.25
[88] coda_0.19-4
Total processing time was 2.51 mins.
To reproduce this report, do:
html <- matrixStats:::benchmark('allocVector')
Copyright Henrik Bengtsson. Last updated on 2021-08-25 22:07:29 (+0200 UTC). Powered by RSP.