This report benchmark the performance of colRanks() and rowRanks() on subsetted computation.
> rmatrix <- function(nrow, ncol, mode = c("logical", "double", "integer", "index"), range = c(-100,
+ +100), na_prob = 0) {
+ mode <- match.arg(mode)
+ n <- nrow * ncol
+ if (mode == "logical") {
+ x <- sample(c(FALSE, TRUE), size = n, replace = TRUE)
+ } else if (mode == "index") {
+ x <- seq_len(n)
+ mode <- "integer"
+ } 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
+ dim(x) <- c(nrow, ncol)
+ x
+ }
> rmatrices <- function(scale = 10, seed = 1, ...) {
+ set.seed(seed)
+ data <- list()
+ data[[1]] <- rmatrix(nrow = scale * 1, ncol = scale * 1, ...)
+ data[[2]] <- rmatrix(nrow = scale * 10, ncol = scale * 10, ...)
+ data[[3]] <- rmatrix(nrow = scale * 100, ncol = scale * 1, ...)
+ data[[4]] <- t(data[[3]])
+ data[[5]] <- rmatrix(nrow = scale * 10, ncol = scale * 100, ...)
+ data[[6]] <- t(data[[5]])
+ names(data) <- sapply(data, FUN = function(x) paste(dim(x), collapse = "x"))
+ data
+ }
> data <- rmatrices(mode = mode)
> X <- data[["10x10"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5291033 282.6 8529671 455.6 8529671 455.6
Vcells 10408751 79.5 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5281804 282.1 8529671 455.6 8529671 455.6
Vcells 10378384 79.2 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+10x10 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 0.010045 | 0.0104090 | 0.0128028 | 0.0106035 | 0.0107815 | 0.222945 |
| 2 | colRanks(X, rows, cols) | 0.010460 | 0.0108710 | 0.0110724 | 0.0109905 | 0.0111860 | 0.014716 |
| 3 | colRanks(X[rows, cols]) | 0.011304 | 0.0116975 | 0.0119653 | 0.0118630 | 0.0120775 | 0.019480 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
| 2 | colRanks(X, rows, cols) | 1.041314 | 1.044385 | 0.8648400 | 1.036497 | 1.037518 | 0.0660073 |
| 3 | colRanks(X[rows, cols]) | 1.125336 | 1.123787 | 0.9345809 | 1.118782 | 1.120206 | 0.0873758 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on integer+10x10 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 0.004894 | 0.0051295 | 0.0053376 | 0.0052715 | 0.0054265 | 0.008029 |
| 2 | rowRanks(X, cols, rows) | 0.005237 | 0.0054905 | 0.0074400 | 0.0055780 | 0.0058300 | 0.178301 |
| 3 | rowRanks(X[cols, rows]) | 0.005874 | 0.0062575 | 0.0064235 | 0.0063795 | 0.0065030 | 0.009244 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 2 | rowRanks(X, cols, rows) | 1.070086 | 1.070377 | 1.393895 | 1.058143 | 1.074357 | 22.207124 |
| 3 | rowRanks(X[cols, rows]) | 1.200245 | 1.219904 | 1.203456 | 1.210187 | 1.198378 | 1.151326 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+10x10 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+10x10 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 4.894 | 5.1295 | 5.33757 | 5.2715 | 5.4265 | 8.029 |
| 1 | colRanks_X_S | 10.045 | 10.4090 | 12.80283 | 10.6035 | 10.7815 | 222.945 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.00000 |
| 1 | colRanks_X_S | 2.052513 | 2.029243 | 2.398625 | 2.011477 | 1.986824 | 27.76747 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+10x10 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> X <- data[["100x100"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5280515 282.1 8529671 455.6 8529671 455.6
Vcells 10047426 76.7 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5280491 282.1 8529671 455.6 8529671 455.6
Vcells 10052479 76.7 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+100x100 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 0.150295 | 0.1586490 | 0.1835278 | 0.1793895 | 0.1988485 | 0.254387 |
| 2 | colRanks(X, rows, cols) | 0.152071 | 0.1623015 | 0.1849575 | 0.1818660 | 0.2003695 | 0.272985 |
| 3 | colRanks(X[rows, cols]) | 0.158641 | 0.1688090 | 0.1939169 | 0.1884575 | 0.2098555 | 0.337548 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 2 | colRanks(X, rows, cols) | 1.011817 | 1.023022 | 1.007790 | 1.013805 | 1.007649 | 1.073109 |
| 3 | colRanks(X[rows, cols]) | 1.055531 | 1.064041 | 1.056608 | 1.050549 | 1.055354 | 1.326907 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on integer+100x100 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 0.141898 | 0.155831 | 0.1764304 | 0.1726100 | 0.1914505 | 0.247824 |
| 2 | rowRanks(X, cols, rows) | 0.143292 | 0.159793 | 0.1791030 | 0.1742860 | 0.1918850 | 0.289692 |
| 3 | rowRanks(X[cols, rows]) | 0.150126 | 0.168037 | 0.1869155 | 0.1858995 | 0.2006625 | 0.262457 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 2 | rowRanks(X, cols, rows) | 1.009824 | 1.025425 | 1.015149 | 1.009710 | 1.002269 | 1.168942 |
| 3 | rowRanks(X[cols, rows]) | 1.057985 | 1.078328 | 1.059429 | 1.076992 | 1.048117 | 1.059046 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+100x100 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+100x100 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 141.898 | 155.831 | 176.4304 | 172.6100 | 191.4505 | 247.824 |
| 1 | colRanks_X_S | 150.295 | 158.649 | 183.5278 | 179.3895 | 198.8485 | 254.387 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 1 | colRanks_X_S | 1.059176 | 1.018084 | 1.040228 | 1.039276 | 1.038642 | 1.026482 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+100x100 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> X <- data[["1000x10"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5281240 282.1 8529671 455.6 8529671 455.6
Vcells 10051441 76.7 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5281234 282.1 8529671 455.6 8529671 455.6
Vcells 10056524 76.8 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+1000x10 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 3 | colRanks(X[rows, cols]) | 0.207244 | 0.2091410 | 0.2413682 | 0.2221680 | 0.2671150 | 0.407985 |
| 2 | colRanks(X, rows, cols) | 0.200697 | 0.2033600 | 0.2343624 | 0.2240790 | 0.2557120 | 0.343630 |
| 1 | colRanks_X_S | 0.198479 | 0.2046835 | 0.2382378 | 0.2296785 | 0.2592915 | 0.346835 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 3 | colRanks(X[rows, cols]) | 1.0000000 | 1.0000000 | 1.0000000 | 1.000000 | 1.0000000 | 1.0000000 |
| 2 | colRanks(X, rows, cols) | 0.9684092 | 0.9723584 | 0.9709745 | 1.008602 | 0.9573105 | 0.8422614 |
| 1 | colRanks_X_S | 0.9577069 | 0.9786866 | 0.9870303 | 1.033805 | 0.9707111 | 0.8501170 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on integer+1000x10 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 0.188780 | 0.1913855 | 0.2243023 | 0.2063585 | 0.2438725 | 0.320750 |
| 2 | rowRanks(X, cols, rows) | 0.191312 | 0.1939085 | 0.2310270 | 0.2260505 | 0.2544410 | 0.315402 |
| 3 | rowRanks(X[cols, rows]) | 0.198135 | 0.2006595 | 0.2371962 | 0.2281725 | 0.2592030 | 0.401751 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
| 2 | rowRanks(X, cols, rows) | 1.013412 | 1.013183 | 1.029981 | 1.095426 | 1.043336 | 0.9833266 |
| 3 | rowRanks(X[cols, rows]) | 1.049555 | 1.048457 | 1.057485 | 1.105709 | 1.062863 | 1.2525362 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+1000x10 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+1000x10 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 188.780 | 191.3855 | 224.3023 | 206.3585 | 243.8725 | 320.750 |
| 1 | colRanks_X_S | 198.479 | 204.6835 | 238.2378 | 229.6785 | 259.2915 | 346.835 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 1 | colRanks_X_S | 1.051377 | 1.069483 | 1.062128 | 1.113007 | 1.063226 | 1.081325 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+1000x10 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> X <- data[["10x1000"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5281463 282.1 8529671 455.6 8529671 455.6
Vcells 10052322 76.7 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5281439 282.1 8529671 455.6 8529671 455.6
Vcells 10057375 76.8 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+10x1000 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 0.095829 | 0.1036630 | 0.1162648 | 0.112670 | 0.1272660 | 0.205064 |
| 2 | colRanks(X, rows, cols) | 0.098671 | 0.1075995 | 0.1161861 | 0.113351 | 0.1206080 | 0.166406 |
| 3 | colRanks(X[rows, cols]) | 0.108334 | 0.1184410 | 0.1279909 | 0.123494 | 0.1362925 | 0.168258 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 | 1.0000000 |
| 2 | colRanks(X, rows, cols) | 1.029657 | 1.037974 | 0.999323 | 1.006044 | 0.9476844 | 0.8114832 |
| 3 | colRanks(X[rows, cols]) | 1.130493 | 1.142558 | 1.100857 | 1.096068 | 1.0709262 | 0.8205146 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on integer+10x1000 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks(X, cols, rows) | 0.093307 | 0.0992185 | 0.1099324 | 0.1038515 | 0.116065 | 0.182439 |
| 1 | rowRanks_X_S | 0.091753 | 0.0977660 | 0.1083293 | 0.1045810 | 0.114656 | 0.154599 |
| 3 | rowRanks(X[cols, rows]) | 0.099857 | 0.1075825 | 0.1185675 | 0.1136840 | 0.127422 | 0.184145 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks(X, cols, rows) | 1.0000000 | 1.0000000 | 1.0000000 | 1.000000 | 1.0000000 | 1.000000 |
| 1 | rowRanks_X_S | 0.9833453 | 0.9853606 | 0.9854171 | 1.007024 | 0.9878603 | 0.847401 |
| 3 | rowRanks(X[cols, rows]) | 1.0701984 | 1.0842988 | 1.0785488 | 1.094679 | 1.0978503 | 1.009351 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+10x1000 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+10x1000 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 91.753 | 97.766 | 108.3293 | 104.581 | 114.656 | 154.599 |
| 1 | colRanks_X_S | 95.829 | 103.663 | 116.2648 | 112.670 | 127.266 | 205.064 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 1 | colRanks_X_S | 1.044424 | 1.060318 | 1.073254 | 1.077347 | 1.109981 | 1.326425 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+10x1000 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> X <- data[["100x1000"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5281673 282.1 8529671 455.6 8529671 455.6
Vcells 10074984 76.9 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5281649 282.1 8529671 455.6 8529671 455.6
Vcells 10125037 77.3 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+100x1000 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 1.460714 | 1.543330 | 1.614133 | 1.582775 | 1.710147 | 2.427528 |
| 2 | colRanks(X, rows, cols) | 1.463529 | 1.546407 | 1.611092 | 1.589112 | 1.666816 | 2.333369 |
| 3 | colRanks(X[rows, cols]) | 1.525266 | 1.612488 | 1.695617 | 1.654181 | 1.812447 | 2.213348 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
| 2 | colRanks(X, rows, cols) | 1.001927 | 1.001994 | 0.998116 | 1.004003 | 0.974663 | 0.9612120 |
| 3 | colRanks(X[rows, cols]) | 1.044192 | 1.044811 | 1.050482 | 1.045114 | 1.059820 | 0.9117703 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on integer+100x1000 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.418860 | 1.497006 | 1.563823 | 1.538423 | 1.555997 | 2.317449 |
| 2 | rowRanks(X, cols, rows) | 1.427341 | 1.507645 | 1.552392 | 1.547082 | 1.550842 | 2.095641 |
| 3 | rowRanks(X[cols, rows]) | 1.494656 | 1.583282 | 1.629205 | 1.623316 | 1.631626 | 2.200605 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.0000000 | 1.0000000 |
| 2 | rowRanks(X, cols, rows) | 1.005977 | 1.007107 | 0.9926903 | 1.005629 | 0.9966873 | 0.9042879 |
| 3 | rowRanks(X[cols, rows]) | 1.053420 | 1.057632 | 1.0418091 | 1.055182 | 1.0486052 | 0.9495808 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+100x1000 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+100x1000 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.418860 | 1.497006 | 1.563823 | 1.538423 | 1.555997 | 2.317449 |
| 1 | colRanks_X_S | 1.460714 | 1.543330 | 1.614133 | 1.582775 | 1.710147 | 2.427528 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.00000 | 1.000000 | 1.0000 |
| 1 | colRanks_X_S | 1.029498 | 1.030944 | 1.032171 | 1.02883 | 1.099068 | 1.0475 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+100x1000 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> X <- data[["1000x100"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5281886 282.1 8529671 455.6 8529671 455.6
Vcells 10075782 76.9 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5281862 282.1 8529671 455.6 8529671 455.6
Vcells 10125835 77.3 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+1000x100 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 1.899728 | 2.011998 | 2.070741 | 2.060049 | 2.069953 | 3.085677 |
| 2 | colRanks(X, rows, cols) | 1.910097 | 2.014720 | 2.081040 | 2.063831 | 2.070780 | 2.708117 |
| 3 | colRanks(X[rows, cols]) | 1.961788 | 2.069022 | 2.104722 | 2.119623 | 2.130853 | 2.906828 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
| 2 | colRanks(X, rows, cols) | 1.005458 | 1.001353 | 1.004973 | 1.001836 | 1.000400 | 0.8776411 |
| 3 | colRanks(X[rows, cols]) | 1.032668 | 1.028342 | 1.016410 | 1.028918 | 1.029421 | 0.9420390 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on integer+1000x100 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.865247 | 1.968962 | 2.009408 | 2.020777 | 2.026666 | 2.441963 |
| 2 | rowRanks(X, cols, rows) | 1.875188 | 1.977621 | 2.041434 | 2.029410 | 2.035922 | 3.091483 |
| 3 | rowRanks(X[cols, rows]) | 1.938070 | 2.051200 | 2.091851 | 2.102823 | 2.117586 | 2.970129 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 2 | rowRanks(X, cols, rows) | 1.005330 | 1.004398 | 1.015938 | 1.004272 | 1.004567 | 1.265983 |
| 3 | rowRanks(X[cols, rows]) | 1.039042 | 1.041767 | 1.041029 | 1.040601 | 1.044862 | 1.216287 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on integer+1000x100 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+1000x100 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.865247 | 1.968962 | 2.009408 | 2.020777 | 2.026666 | 2.441963 |
| 1 | colRanks_X_S | 1.899728 | 2.011998 | 2.070741 | 2.060049 | 2.069953 | 3.085677 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 1 | colRanks_X_S | 1.018486 | 1.021857 | 1.030523 | 1.019434 | 1.021359 | 1.263605 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on integer+1000x100 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> rmatrix <- function(nrow, ncol, mode = c("logical", "double", "integer", "index"), range = c(-100,
+ +100), na_prob = 0) {
+ mode <- match.arg(mode)
+ n <- nrow * ncol
+ if (mode == "logical") {
+ x <- sample(c(FALSE, TRUE), size = n, replace = TRUE)
+ } else if (mode == "index") {
+ x <- seq_len(n)
+ mode <- "integer"
+ } 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
+ dim(x) <- c(nrow, ncol)
+ x
+ }
> rmatrices <- function(scale = 10, seed = 1, ...) {
+ set.seed(seed)
+ data <- list()
+ data[[1]] <- rmatrix(nrow = scale * 1, ncol = scale * 1, ...)
+ data[[2]] <- rmatrix(nrow = scale * 10, ncol = scale * 10, ...)
+ data[[3]] <- rmatrix(nrow = scale * 100, ncol = scale * 1, ...)
+ data[[4]] <- t(data[[3]])
+ data[[5]] <- rmatrix(nrow = scale * 10, ncol = scale * 100, ...)
+ data[[6]] <- t(data[[5]])
+ names(data) <- sapply(data, FUN = function(x) paste(dim(x), collapse = "x"))
+ data
+ }
> data <- rmatrices(mode = mode)
> X <- data[["10x10"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5282103 282.1 8529671 455.6 8529671 455.6
Vcells 10166883 77.6 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5282070 282.1 8529671 455.6 8529671 455.6
Vcells 10167021 77.6 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+10x10 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 0.009751 | 0.010362 | 0.0112964 | 0.0105985 | 0.0108070 | 0.062305 |
| 2 | colRanks(X, rows, cols) | 0.010260 | 0.010843 | 0.0111679 | 0.0111210 | 0.0113475 | 0.015962 |
| 3 | colRanks(X[rows, cols]) | 0.010818 | 0.011675 | 0.0120948 | 0.0118465 | 0.0121015 | 0.027480 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
| 2 | colRanks(X, rows, cols) | 1.052200 | 1.046420 | 0.988630 | 1.049299 | 1.050014 | 0.2561913 |
| 3 | colRanks(X[rows, cols]) | 1.109425 | 1.126713 | 1.070679 | 1.117752 | 1.119784 | 0.4410561 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on double+10x10 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 0.005247 | 0.0055745 | 0.0058052 | 0.0056865 | 0.0059020 | 0.009326 |
| 2 | rowRanks(X, cols, rows) | 0.005811 | 0.0059970 | 0.0065303 | 0.0061595 | 0.0063700 | 0.035639 |
| 3 | rowRanks(X[cols, rows]) | 0.006347 | 0.0067040 | 0.0068870 | 0.0068480 | 0.0070055 | 0.009154 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
| 2 | rowRanks(X, cols, rows) | 1.107490 | 1.075792 | 1.124909 | 1.083179 | 1.079295 | 3.8214669 |
| 3 | rowRanks(X[cols, rows]) | 1.209644 | 1.202619 | 1.186347 | 1.204256 | 1.186970 | 0.9815569 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+10x10 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+10x10 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 5.247 | 5.5745 | 5.80520 | 5.6865 | 5.902 | 9.326 |
| 1 | colRanks_X_S | 9.751 | 10.3620 | 11.29637 | 10.5985 | 10.807 | 62.305 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.0000 | 1.000000 | 1.000000 |
| 1 | colRanks_X_S | 1.858395 | 1.858821 | 1.945905 | 1.8638 | 1.831074 | 6.680785 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+10x10 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> X <- data[["100x100"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5282301 282.2 8529671 455.6 8529671 455.6
Vcells 10172836 77.7 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5282277 282.2 8529671 455.6 8529671 455.6
Vcells 10182889 77.7 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+100x100 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | colRanks(X, rows, cols) | 0.157793 | 0.1706415 | 0.1952590 | 0.188473 | 0.2122810 | 0.312737 |
| 1 | colRanks_X_S | 0.156409 | 0.1670390 | 0.1971071 | 0.193650 | 0.2153525 | 0.303292 |
| 3 | colRanks(X[rows, cols]) | 0.167291 | 0.1815095 | 0.2084319 | 0.204399 | 0.2266885 | 0.359424 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | colRanks(X, rows, cols) | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
| 1 | colRanks_X_S | 0.991229 | 0.9788885 | 1.009465 | 1.027468 | 1.014469 | 0.9697989 |
| 3 | colRanks(X[rows, cols]) | 1.060193 | 1.0636891 | 1.067464 | 1.084500 | 1.067870 | 1.1492852 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on double+100x100 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 0.143959 | 0.1522625 | 0.1777158 | 0.1720695 | 0.1958270 | 0.259568 |
| 2 | rowRanks(X, cols, rows) | 0.144963 | 0.1565980 | 0.1780939 | 0.1732365 | 0.1907675 | 0.298066 |
| 3 | rowRanks(X[cols, rows]) | 0.155006 | 0.1689710 | 0.1880969 | 0.1841210 | 0.2026895 | 0.260504 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 | 1.000000 |
| 2 | rowRanks(X, cols, rows) | 1.006974 | 1.028474 | 1.002128 | 1.006782 | 0.9741634 | 1.148316 |
| 3 | rowRanks(X[cols, rows]) | 1.076737 | 1.109735 | 1.058414 | 1.070039 | 1.0350437 | 1.003606 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+100x100 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+100x100 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 143.959 | 152.2625 | 177.7158 | 172.0695 | 195.8270 | 259.568 |
| 1 | colRanks_X_S | 156.409 | 167.0390 | 197.1071 | 193.6500 | 215.3525 | 303.292 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 1 | colRanks_X_S | 1.086483 | 1.097046 | 1.109114 | 1.125417 | 1.099708 | 1.168449 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+100x100 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> X <- data[["1000x10"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5282501 282.2 8529671 455.6 8529671 455.6
Vcells 10174248 77.7 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5282477 282.2 8529671 455.6 8529671 455.6
Vcells 10184301 77.8 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+1000x10 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | colRanks(X, rows, cols) | 0.219703 | 0.222095 | 0.2588177 | 0.2431585 | 0.2774785 | 0.383786 |
| 3 | colRanks(X[rows, cols]) | 0.228932 | 0.231082 | 0.2674533 | 0.2467775 | 0.2945105 | 0.453573 |
| 1 | colRanks_X_S | 0.216946 | 0.220667 | 0.2593508 | 0.2539770 | 0.2825490 | 0.389968 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | colRanks(X, rows, cols) | 1.0000000 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 3 | colRanks(X[rows, cols]) | 1.0420067 | 1.0404647 | 1.033365 | 1.014883 | 1.061381 | 1.181838 |
| 1 | colRanks_X_S | 0.9874512 | 0.9935703 | 1.002060 | 1.044492 | 1.018274 | 1.016108 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on double+1000x10 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 0.205128 | 0.2073270 | 0.2367801 | 0.2186765 | 0.2590685 | 0.354804 |
| 2 | rowRanks(X, cols, rows) | 0.208523 | 0.2103955 | 0.2431503 | 0.2312000 | 0.2647270 | 0.334157 |
| 3 | rowRanks(X[cols, rows]) | 0.218719 | 0.2208370 | 0.2523473 | 0.2386930 | 0.2779100 | 0.424637 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
| 2 | rowRanks(X, cols, rows) | 1.016551 | 1.014800 | 1.026903 | 1.057270 | 1.021842 | 0.9418073 |
| 3 | rowRanks(X[cols, rows]) | 1.066256 | 1.065163 | 1.065745 | 1.091535 | 1.072728 | 1.1968213 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+1000x10 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+1000x10 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 205.128 | 207.327 | 236.7801 | 218.6765 | 259.0685 | 354.804 |
| 1 | colRanks_X_S | 216.946 | 220.667 | 259.3508 | 253.9770 | 282.5490 | 389.968 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 1 | colRanks_X_S | 1.057613 | 1.064343 | 1.095323 | 1.161428 | 1.090634 | 1.099108 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+1000x10 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> X <- data[["10x1000"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5282706 282.2 8529671 455.6 8529671 455.6
Vcells 10174384 77.7 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5282682 282.2 8529671 455.6 8529671 455.6
Vcells 10184437 77.8 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+10x1000 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | colRanks(X, rows, cols) | 0.107805 | 0.1171945 | 0.1271478 | 0.1237850 | 0.1329600 | 0.210252 |
| 1 | colRanks_X_S | 0.105226 | 0.1138685 | 0.1299248 | 0.1253850 | 0.1376795 | 0.216747 |
| 3 | colRanks(X[rows, cols]) | 0.121109 | 0.1329515 | 0.1454440 | 0.1387485 | 0.1543040 | 0.242364 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | colRanks(X, rows, cols) | 1.0000000 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 1 | colRanks_X_S | 0.9760772 | 0.9716198 | 1.021841 | 1.012926 | 1.035496 | 1.030892 |
| 3 | colRanks(X[rows, cols]) | 1.1234080 | 1.1344517 | 1.143897 | 1.120883 | 1.160529 | 1.152731 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on double+10x1000 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 0.089888 | 0.1005880 | 0.1092712 | 0.1064815 | 0.1171740 | 0.146230 |
| 2 | rowRanks(X, cols, rows) | 0.094083 | 0.1013450 | 0.1107924 | 0.1070895 | 0.1142800 | 0.192828 |
| 3 | rowRanks(X[cols, rows]) | 0.102016 | 0.1128115 | 0.1231601 | 0.1193580 | 0.1343425 | 0.160808 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 | 1.000000 |
| 2 | rowRanks(X, cols, rows) | 1.046669 | 1.007526 | 1.013921 | 1.005710 | 0.9753017 | 1.318662 |
| 3 | rowRanks(X[cols, rows]) | 1.134923 | 1.121520 | 1.127104 | 1.120927 | 1.1465214 | 1.099692 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+10x1000 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+10x1000 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 89.888 | 100.5880 | 109.2712 | 106.4815 | 117.1740 | 146.230 |
| 1 | colRanks_X_S | 105.226 | 113.8685 | 129.9248 | 125.3850 | 137.6795 | 216.747 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000 | 1.000000 |
| 1 | colRanks_X_S | 1.170635 | 1.132029 | 1.189012 | 1.177528 | 1.175 | 1.482233 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+10x1000 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> X <- data[["100x1000"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5282916 282.2 8529671 455.6 8529671 455.6
Vcells 10219850 78.0 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5282892 282.2 8529671 455.6 8529671 455.6
Vcells 10319903 78.8 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+100x1000 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 1.560653 | 1.686157 | 1.735688 | 1.698892 | 1.741967 | 2.577927 |
| 2 | colRanks(X, rows, cols) | 1.560967 | 1.690041 | 1.729855 | 1.705023 | 1.740768 | 2.494924 |
| 3 | colRanks(X[rows, cols]) | 1.661799 | 1.793497 | 1.858614 | 1.804922 | 1.848437 | 2.300170 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | colRanks_X_S | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.0000000 | 1.0000000 |
| 2 | colRanks(X, rows, cols) | 1.000201 | 1.002303 | 0.9966395 | 1.003608 | 0.9993111 | 0.9678024 |
| 3 | colRanks(X[rows, cols]) | 1.064810 | 1.063660 | 1.0708229 | 1.062412 | 1.0611205 | 0.8922557 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on double+100x1000 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.495770 | 1.592583 | 1.652753 | 1.618496 | 1.649717 | 2.525829 |
| 2 | rowRanks(X, cols, rows) | 1.497414 | 1.619851 | 1.637196 | 1.627238 | 1.660529 | 2.308154 |
| 3 | rowRanks(X[cols, rows]) | 1.621047 | 1.743577 | 1.780409 | 1.762746 | 1.787400 | 2.322907 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
| 2 | rowRanks(X, cols, rows) | 1.001099 | 1.017122 | 0.9905868 | 1.005402 | 1.006553 | 0.9138204 |
| 3 | rowRanks(X[cols, rows]) | 1.083754 | 1.094811 | 1.0772382 | 1.089127 | 1.083458 | 0.9196612 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+100x1000 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+100x1000 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.495770 | 1.592583 | 1.652753 | 1.618496 | 1.649717 | 2.525829 |
| 1 | colRanks_X_S | 1.560653 | 1.686157 | 1.735688 | 1.698892 | 1.741967 | 2.577927 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 1 | colRanks_X_S | 1.043378 | 1.058756 | 1.050179 | 1.049674 | 1.055919 | 1.020626 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+100x1000 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.

> X <- data[["1000x100"]]
> rows <- sample.int(nrow(X), size = nrow(X) * 0.7)
> cols <- sample.int(ncol(X), size = ncol(X) * 0.7)
> X_S <- X[rows, cols]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5283129 282.2 8529671 455.6 8529671 455.6
Vcells 10219994 78.0 31876688 243.2 60562128 462.1
> colStats <- microbenchmark(colRanks_X_S = colRanks(X_S, na.rm = FALSE), `colRanks(X, rows, cols)` = colRanks(X,
+ rows = rows, cols = cols, na.rm = FALSE), `colRanks(X[rows, cols])` = colRanks(X[rows, cols],
+ na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 5283105 282.2 8529671 455.6 8529671 455.6
Vcells 10320047 78.8 31876688 243.2 60562128 462.1
> rowStats <- microbenchmark(rowRanks_X_S = rowRanks(X_S, na.rm = FALSE), `rowRanks(X, cols, rows)` = rowRanks(X,
+ rows = cols, cols = rows, na.rm = FALSE), `rowRanks(X[cols, rows])` = rowRanks(X[cols, rows],
+ na.rm = FALSE), unit = "ms")
Table: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+1000x100 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | colRanks(X, rows, cols) | 2.141629 | 2.321084 | 2.403352 | 2.369630 | 2.514019 | 2.984235 |
| 1 | colRanks_X_S | 2.140986 | 2.323867 | 2.414664 | 2.396863 | 2.509381 | 3.435969 |
| 3 | colRanks(X[rows, cols]) | 2.223409 | 2.413083 | 2.533625 | 2.439485 | 2.738247 | 3.295286 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | colRanks(X, rows, cols) | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 | 1.000000 |
| 1 | colRanks_X_S | 0.9996998 | 1.001199 | 1.004707 | 1.011492 | 0.9981553 | 1.151374 |
| 3 | colRanks(X[rows, cols]) | 1.0381859 | 1.039636 | 1.054205 | 1.029479 | 1.0891913 | 1.104231 |
Table: Benchmarking of rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on double+1000x100 data (transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 2.076805 | 2.248443 | 2.266023 | 2.260276 | 2.309429 | 2.748058 |
| 2 | rowRanks(X, cols, rows) | 2.087850 | 2.229965 | 2.291291 | 2.261569 | 2.321666 | 3.471563 |
| 3 | rowRanks(X[cols, rows]) | 2.191521 | 2.355176 | 2.388814 | 2.379115 | 2.432278 | 3.290447 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 1 | rowRanks_X_S | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 2 | rowRanks(X, cols, rows) | 1.005318 | 0.9917819 | 1.011151 | 1.000572 | 1.005299 | 1.263279 |
| 3 | rowRanks(X[cols, rows]) | 1.055237 | 1.0474695 | 1.054188 | 1.052577 | 1.053195 | 1.197372 |
Figure: Benchmarking of colRanks_X_S(), colRanks(X, rows, cols)() and colRanks(X[rows, cols])() on double+1000x100 data as well as rowRanks_X_S(), rowRanks(X, cols, rows)() and rowRanks(X[cols, rows])() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.

Table: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+1000x100 data (original and transposed). The top panel shows times in milliseconds and the bottom panel shows relative times.
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 2.076805 | 2.248443 | 2.266023 | 2.260276 | 2.309429 | 2.748058 |
| 1 | colRanks_X_S | 2.140986 | 2.323867 | 2.414664 | 2.396863 | 2.509381 | 3.435969 |
| expr | min | lq | mean | median | uq | max | |
|---|---|---|---|---|---|---|---|
| 2 | rowRanks_X_S | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| 1 | colRanks_X_S | 1.030904 | 1.033545 | 1.065596 | 1.060429 | 1.086581 | 1.250326 |
Figure: Benchmarking of colRanks_X_S() and rowRanks_X_S() on double+1000x100 data (original and transposed). 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.1 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] rappdirs_0.3.3 startup_0.15.0 labeling_0.4.2
[67] bitops_1.0-7 base64enc_0.1-3 boot_1.3-28
[70] gtable_0.3.0 DBI_1.1.1 markdown_1.1
[73] R6_2.5.1 lpSolveAPI_5.5.2.0-17.7 rle_0.9.2
[76] dplyr_1.0.7 fastmap_1.1.0 bit_4.0.4
[79] utf8_1.2.2 parallel_4.1.1 Rcpp_1.0.7
[82] vctrs_0.3.8 png_0.1-7 DEoptimR_1.0-9
[85] tidyselect_1.1.1 xfun_0.25 coda_0.19-4
Total processing time was 27.94 secs.
To reproduce this report, do:
html <- matrixStats:::benchmark('colRowRanks_subset')
Copyright Dongcan Jiang. Last updated on 2021-08-25 19:07:53 (+0200 UTC). Powered by RSP.