colRowProds_subset
matrixStats: Benchmark report
This report benchmark the performance of colProds() and rowProds() 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 = "double")
> 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]
> colStats <- microbenchmark(`colProds_X_S w/ direct` = colProds(X_S, method = "direct", na.rm = FALSE),
+ `colProds_X_S w/ expSumLog` = colProds(X_S, method = "expSumLog", na.rm = FALSE), `colProds(X, rows, cols) w/ direct` = colProds(X,
+ rows = rows, cols = cols, method = "direct", na.rm = FALSE), `colProds(X, rows, cols) w/ expSumLog` = colProds(X,
+ rows = rows, cols = cols, method = "expSumLog", na.rm = FALSE), `colProds(X[rows, cols]) w/ direct` = colProds(X[rows,
+ cols], method = "direct", na.rm = FALSE), `colProds(X[rows, cols]) w/ expSumLog` = colProds(X[rows,
+ cols], method = "expSumLog", na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> rowStats <- microbenchmark(`rowProds_X_S w/ direct` = rowProds(X_S, method = "direct", na.rm = FALSE),
+ `rowProds_X_S w/ expSumLog` = rowProds(X_S, method = "expSumLog", na.rm = FALSE), `rowProds(X, cols, rows) w/ direct` = rowProds(X,
+ rows = cols, cols = rows, method = "direct", na.rm = FALSE), `rowProds(X, cols, rows) w/ expSumLog` = rowProds(X,
+ rows = cols, cols = rows, method = "expSumLog", na.rm = FALSE), `rowProds(X[cols, rows]) w/ direct` = rowProds(X[cols,
+ rows], method = "direct", na.rm = FALSE), `rowProds(X[cols, rows]) w/ expSumLog` = rowProds(X[cols,
+ rows], method = "expSumLog", na.rm = FALSE), unit = "ms")
Table: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 10x10 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 0.006574 | 0.0069430 | 0.0071247 | 0.0070850 | 0.0072895 | 0.008511 |
5 | colProds(X[rows, cols]) w/ direct | 0.007490 | 0.0078390 | 0.0098292 | 0.0080165 | 0.0082475 | 0.178016 |
3 | colProds(X, rows, cols) w/ direct | 0.007582 | 0.0079545 | 0.0082020 | 0.0080875 | 0.0082220 | 0.013044 |
2 | colProds_X_S w/ expSumLog | 0.010022 | 0.0102775 | 0.0105636 | 0.0104185 | 0.0106050 | 0.014128 |
4 | colProds(X, rows, cols) w/ expSumLog | 0.010984 | 0.0112670 | 0.0114605 | 0.0114155 | 0.0116115 | 0.012152 |
6 | colProds(X[rows, cols]) w/ expSumLog | 0.011065 | 0.0112560 | 0.0119108 | 0.0114400 | 0.0116870 | 0.047841 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
5 | colProds(X[rows, cols]) w/ direct | 1.139337 | 1.129051 | 1.379586 | 1.131475 | 1.131422 | 20.915991 |
3 | colProds(X, rows, cols) w/ direct | 1.153331 | 1.145686 | 1.151204 | 1.141496 | 1.127924 | 1.532605 |
2 | colProds_X_S w/ expSumLog | 1.524490 | 1.480268 | 1.482663 | 1.470501 | 1.454832 | 1.659970 |
4 | colProds(X, rows, cols) w/ expSumLog | 1.670824 | 1.622785 | 1.608546 | 1.611221 | 1.592908 | 1.427799 |
6 | colProds(X[rows, cols]) w/ expSumLog | 1.683146 | 1.621201 | 1.671754 | 1.614679 | 1.603265 | 5.621079 |
Table: Benchmarking of rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on 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 | rowProds_X_S w/ direct | 0.006738 | 0.0070710 | 0.0073595 | 0.0072715 | 0.0074905 | 0.011981 |
3 | rowProds(X, cols, rows) w/ direct | 0.007482 | 0.0078915 | 0.0081667 | 0.0081400 | 0.0082800 | 0.012108 |
5 | rowProds(X[cols, rows]) w/ direct | 0.007543 | 0.0078915 | 0.0082164 | 0.0081600 | 0.0083070 | 0.014121 |
2 | rowProds_X_S w/ expSumLog | 0.010219 | 0.0105890 | 0.0108469 | 0.0107545 | 0.0108770 | 0.014269 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 0.010938 | 0.0113800 | 0.0116240 | 0.0115955 | 0.0118485 | 0.012620 |
4 | rowProds(X, cols, rows) w/ expSumLog | 0.010934 | 0.0114195 | 0.0135372 | 0.0116845 | 0.0119265 | 0.197744 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | rowProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
3 | rowProds(X, cols, rows) w/ direct | 1.110418 | 1.116037 | 1.109678 | 1.119439 | 1.105400 | 1.010600 |
5 | rowProds(X[cols, rows]) w/ direct | 1.119472 | 1.116037 | 1.116431 | 1.122189 | 1.109005 | 1.178616 |
2 | rowProds_X_S w/ expSumLog | 1.516622 | 1.497525 | 1.473852 | 1.478993 | 1.452106 | 1.190969 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 1.623330 | 1.609390 | 1.579444 | 1.594650 | 1.581804 | 1.053334 |
4 | rowProds(X, cols, rows) w/ expSumLog | 1.622737 | 1.614977 | 1.839410 | 1.606890 | 1.592217 | 16.504799 |
Figure: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 10x10 data as well as rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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 | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 6.574 | 6.943 | 7.12474 | 7.0850 | 7.2895 | 8.511 |
2 | rowProds_X_S w/ direct | 6.738 | 7.071 | 7.35954 | 7.2715 | 7.4905 | 11.981 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | rowProds_X_S w/ direct | 1.024947 | 1.018436 | 1.032956 | 1.026323 | 1.027574 | 1.407708 |
Figure: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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]
> colStats <- microbenchmark(`colProds_X_S w/ direct` = colProds(X_S, method = "direct", na.rm = FALSE),
+ `colProds_X_S w/ expSumLog` = colProds(X_S, method = "expSumLog", na.rm = FALSE), `colProds(X, rows, cols) w/ direct` = colProds(X,
+ rows = rows, cols = cols, method = "direct", na.rm = FALSE), `colProds(X, rows, cols) w/ expSumLog` = colProds(X,
+ rows = rows, cols = cols, method = "expSumLog", na.rm = FALSE), `colProds(X[rows, cols]) w/ direct` = colProds(X[rows,
+ cols], method = "direct", na.rm = FALSE), `colProds(X[rows, cols]) w/ expSumLog` = colProds(X[rows,
+ cols], method = "expSumLog", na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> rowStats <- microbenchmark(`rowProds_X_S w/ direct` = rowProds(X_S, method = "direct", na.rm = FALSE),
+ `rowProds_X_S w/ expSumLog` = rowProds(X_S, method = "expSumLog", na.rm = FALSE), `rowProds(X, cols, rows) w/ direct` = rowProds(X,
+ rows = cols, cols = rows, method = "direct", na.rm = FALSE), `rowProds(X, cols, rows) w/ expSumLog` = rowProds(X,
+ rows = cols, cols = rows, method = "expSumLog", na.rm = FALSE), `rowProds(X[cols, rows]) w/ direct` = rowProds(X[cols,
+ rows], method = "direct", na.rm = FALSE), `rowProds(X[cols, rows]) w/ expSumLog` = rowProds(X[cols,
+ rows], method = "expSumLog", na.rm = FALSE), unit = "ms")
Table: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 100x100 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 0.062196 | 0.0635055 | 0.0650804 | 0.0641395 | 0.0648185 | 0.084518 |
3 | colProds(X, rows, cols) w/ direct | 0.077699 | 0.0792800 | 0.0811228 | 0.0801055 | 0.0807855 | 0.116971 |
5 | colProds(X[rows, cols]) w/ direct | 0.078160 | 0.0794085 | 0.0816097 | 0.0802020 | 0.0807760 | 0.163951 |
2 | colProds_X_S w/ expSumLog | 0.191173 | 0.1932180 | 0.1959093 | 0.1947870 | 0.1960110 | 0.239191 |
4 | colProds(X, rows, cols) w/ expSumLog | 0.206916 | 0.2091165 | 0.2123489 | 0.2102570 | 0.2128055 | 0.265087 |
6 | colProds(X[rows, cols]) w/ expSumLog | 0.207142 | 0.2091545 | 0.2127304 | 0.2105520 | 0.2135045 | 0.244942 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
3 | colProds(X, rows, cols) w/ direct | 1.249260 | 1.248396 | 1.246501 | 1.248926 | 1.246334 | 1.383977 |
5 | colProds(X[rows, cols]) w/ direct | 1.256673 | 1.250419 | 1.253981 | 1.250431 | 1.246187 | 1.939835 |
2 | colProds_X_S w/ expSumLog | 3.073719 | 3.042540 | 3.010263 | 3.036927 | 3.023998 | 2.830060 |
4 | colProds(X, rows, cols) w/ expSumLog | 3.326838 | 3.292888 | 3.262868 | 3.278120 | 3.283098 | 3.136456 |
6 | colProds(X[rows, cols]) w/ expSumLog | 3.330471 | 3.293486 | 3.268730 | 3.282720 | 3.293882 | 2.898105 |
Table: Benchmarking of rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on 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 | rowProds_X_S w/ direct | 0.071789 | 0.0730110 | 0.0753321 | 0.0741165 | 0.0756955 | 0.124923 |
3 | rowProds(X, cols, rows) w/ direct | 0.079491 | 0.0810540 | 0.0834618 | 0.0820715 | 0.0827545 | 0.117377 |
5 | rowProds(X[cols, rows]) w/ direct | 0.080014 | 0.0812495 | 0.0830881 | 0.0822250 | 0.0831610 | 0.115756 |
2 | rowProds_X_S w/ expSumLog | 0.202001 | 0.2034850 | 0.2056392 | 0.2043945 | 0.2056835 | 0.238712 |
4 | rowProds(X, cols, rows) w/ expSumLog | 0.209985 | 0.2118575 | 0.2183014 | 0.2131770 | 0.2162840 | 0.457109 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 0.209854 | 0.2120685 | 0.2172871 | 0.2132150 | 0.2153450 | 0.406702 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | rowProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
3 | rowProds(X, cols, rows) w/ direct | 1.107287 | 1.110162 | 1.107919 | 1.107331 | 1.093255 | 0.9395948 |
5 | rowProds(X[cols, rows]) w/ direct | 1.114572 | 1.112839 | 1.102957 | 1.109402 | 1.098625 | 0.9266188 |
2 | rowProds_X_S w/ expSumLog | 2.813816 | 2.787046 | 2.729768 | 2.757746 | 2.717249 | 1.9108731 |
4 | rowProds(X, cols, rows) w/ expSumLog | 2.925030 | 2.901720 | 2.897853 | 2.876242 | 2.857290 | 3.6591260 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 2.923205 | 2.904610 | 2.884388 | 2.876755 | 2.844885 | 3.2556215 |
Figure: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 100x100 data as well as rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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 | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 62.196 | 63.5055 | 65.08045 | 64.1395 | 64.8185 | 84.518 |
2 | rowProds_X_S w/ direct | 71.789 | 73.0110 | 75.33212 | 74.1165 | 75.6955 | 124.923 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.00000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | rowProds_X_S w/ direct | 1.154238 | 1.14968 | 1.157523 | 1.155552 | 1.167807 | 1.478064 |
Figure: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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]
> colStats <- microbenchmark(`colProds_X_S w/ direct` = colProds(X_S, method = "direct", na.rm = FALSE),
+ `colProds_X_S w/ expSumLog` = colProds(X_S, method = "expSumLog", na.rm = FALSE), `colProds(X, rows, cols) w/ direct` = colProds(X,
+ rows = rows, cols = cols, method = "direct", na.rm = FALSE), `colProds(X, rows, cols) w/ expSumLog` = colProds(X,
+ rows = rows, cols = cols, method = "expSumLog", na.rm = FALSE), `colProds(X[rows, cols]) w/ direct` = colProds(X[rows,
+ cols], method = "direct", na.rm = FALSE), `colProds(X[rows, cols]) w/ expSumLog` = colProds(X[rows,
+ cols], method = "expSumLog", na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> rowStats <- microbenchmark(`rowProds_X_S w/ direct` = rowProds(X_S, method = "direct", na.rm = FALSE),
+ `rowProds_X_S w/ expSumLog` = rowProds(X_S, method = "expSumLog", na.rm = FALSE), `rowProds(X, cols, rows) w/ direct` = rowProds(X,
+ rows = cols, cols = rows, method = "direct", na.rm = FALSE), `rowProds(X, cols, rows) w/ expSumLog` = rowProds(X,
+ rows = cols, cols = rows, method = "expSumLog", na.rm = FALSE), `rowProds(X[cols, rows]) w/ direct` = rowProds(X[cols,
+ rows], method = "direct", na.rm = FALSE), `rowProds(X[cols, rows]) w/ expSumLog` = rowProds(X[cols,
+ rows], method = "expSumLog", na.rm = FALSE), unit = "ms")
Table: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 1000x10 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 0.022963 | 0.0237295 | 0.0245293 | 0.0241340 | 0.0250465 | 0.028994 |
3 | colProds(X, rows, cols) w/ direct | 0.038542 | 0.0392830 | 0.0402477 | 0.0398760 | 0.0410090 | 0.045312 |
5 | colProds(X[rows, cols]) w/ direct | 0.038777 | 0.0396855 | 0.0408819 | 0.0402965 | 0.0414080 | 0.057943 |
2 | colProds_X_S w/ expSumLog | 0.125332 | 0.1266020 | 0.1278879 | 0.1273435 | 0.1282895 | 0.143566 |
4 | colProds(X, rows, cols) w/ expSumLog | 0.141464 | 0.1425290 | 0.1444206 | 0.1431545 | 0.1443785 | 0.219443 |
6 | colProds(X[rows, cols]) w/ expSumLog | 0.141303 | 0.1425760 | 0.1438359 | 0.1433560 | 0.1445395 | 0.152871 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
3 | colProds(X, rows, cols) w/ direct | 1.678439 | 1.655450 | 1.640804 | 1.652275 | 1.637315 | 1.562806 |
5 | colProds(X[rows, cols]) w/ direct | 1.688673 | 1.672412 | 1.666657 | 1.669698 | 1.653245 | 1.998448 |
2 | colProds_X_S w/ expSumLog | 5.457998 | 5.335216 | 5.213683 | 5.276519 | 5.122053 | 4.951576 |
4 | colProds(X, rows, cols) w/ expSumLog | 6.160519 | 6.006405 | 5.887681 | 5.931652 | 5.764418 | 7.568566 |
6 | colProds(X[rows, cols]) w/ expSumLog | 6.153508 | 6.008386 | 5.863846 | 5.940002 | 5.770846 | 5.272505 |
Table: Benchmarking of rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on 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 | rowProds_X_S w/ direct | 0.031138 | 0.0321060 | 0.0329588 | 0.0326445 | 0.0336135 | 0.036702 |
5 | rowProds(X[cols, rows]) w/ direct | 0.041048 | 0.0420770 | 0.0430687 | 0.0426585 | 0.0439805 | 0.047612 |
3 | rowProds(X, cols, rows) w/ direct | 0.040562 | 0.0421290 | 0.0432120 | 0.0428770 | 0.0440485 | 0.049557 |
2 | rowProds_X_S w/ expSumLog | 0.135012 | 0.1359125 | 0.1369962 | 0.1364410 | 0.1377280 | 0.144627 |
4 | rowProds(X, cols, rows) w/ expSumLog | 0.144450 | 0.1457700 | 0.1468335 | 0.1463025 | 0.1476310 | 0.153840 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 0.144599 | 0.1459545 | 0.1479288 | 0.1466095 | 0.1478550 | 0.240112 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | rowProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
5 | rowProds(X[cols, rows]) w/ direct | 1.318261 | 1.310565 | 1.306744 | 1.306759 | 1.308418 | 1.297259 |
3 | rowProds(X, cols, rows) w/ direct | 1.302653 | 1.312185 | 1.311092 | 1.313452 | 1.310441 | 1.350253 |
2 | rowProds_X_S w/ expSumLog | 4.335924 | 4.233243 | 4.156595 | 4.179602 | 4.097401 | 3.940575 |
4 | rowProds(X, cols, rows) w/ expSumLog | 4.639026 | 4.540273 | 4.455068 | 4.481689 | 4.392015 | 4.191597 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 4.643811 | 4.546019 | 4.488302 | 4.491093 | 4.398679 | 6.542205 |
Figure: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 1000x10 data as well as rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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 | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 22.963 | 23.7295 | 24.52928 | 24.1340 | 25.0465 | 28.994 |
2 | rowProds_X_S w/ direct | 31.138 | 32.1060 | 32.95875 | 32.6445 | 33.6135 | 36.702 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
2 | rowProds_X_S w/ direct | 1.356008 | 1.352999 | 1.343649 | 1.352635 | 1.342044 | 1.265848 |
Figure: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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]
> colStats <- microbenchmark(`colProds_X_S w/ direct` = colProds(X_S, method = "direct", na.rm = FALSE),
+ `colProds_X_S w/ expSumLog` = colProds(X_S, method = "expSumLog", na.rm = FALSE), `colProds(X, rows, cols) w/ direct` = colProds(X,
+ rows = rows, cols = cols, method = "direct", na.rm = FALSE), `colProds(X, rows, cols) w/ expSumLog` = colProds(X,
+ rows = rows, cols = cols, method = "expSumLog", na.rm = FALSE), `colProds(X[rows, cols]) w/ direct` = colProds(X[rows,
+ cols], method = "direct", na.rm = FALSE), `colProds(X[rows, cols]) w/ expSumLog` = colProds(X[rows,
+ cols], method = "expSumLog", na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> rowStats <- microbenchmark(`rowProds_X_S w/ direct` = rowProds(X_S, method = "direct", na.rm = FALSE),
+ `rowProds_X_S w/ expSumLog` = rowProds(X_S, method = "expSumLog", na.rm = FALSE), `rowProds(X, cols, rows) w/ direct` = rowProds(X,
+ rows = cols, cols = rows, method = "direct", na.rm = FALSE), `rowProds(X, cols, rows) w/ expSumLog` = rowProds(X,
+ rows = cols, cols = rows, method = "expSumLog", na.rm = FALSE), `rowProds(X[cols, rows]) w/ direct` = rowProds(X[cols,
+ rows], method = "direct", na.rm = FALSE), `rowProds(X[cols, rows]) w/ expSumLog` = rowProds(X[cols,
+ rows], method = "expSumLog", na.rm = FALSE), unit = "ms")
Table: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 10x1000 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 0.443144 | 0.4702645 | 0.5371574 | 0.4830220 | 0.5036900 | 5.569495 |
5 | colProds(X[rows, cols]) w/ direct | 0.452201 | 0.4738010 | 0.4949254 | 0.4923220 | 0.5074575 | 0.657085 |
3 | colProds(X, rows, cols) w/ direct | 0.455445 | 0.4838360 | 0.5032810 | 0.4990385 | 0.5137115 | 0.602106 |
2 | colProds_X_S w/ expSumLog | 0.805423 | 0.8385925 | 0.9264479 | 0.8658590 | 0.8941155 | 5.947703 |
6 | colProds(X[rows, cols]) w/ expSumLog | 0.815253 | 0.8540285 | 0.8848640 | 0.8810710 | 0.9045925 | 1.023303 |
4 | colProds(X, rows, cols) w/ expSumLog | 0.817826 | 0.8579660 | 0.8888690 | 0.8817405 | 0.9097020 | 1.018013 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
5 | colProds(X[rows, cols]) w/ direct | 1.020438 | 1.007520 | 0.9213787 | 1.019254 | 1.007480 | 0.1179793 |
3 | colProds(X, rows, cols) w/ direct | 1.027759 | 1.028859 | 0.9369339 | 1.033159 | 1.019896 | 0.1081078 |
2 | colProds_X_S w/ expSumLog | 1.817520 | 1.783236 | 1.7247231 | 1.792587 | 1.775130 | 1.0679071 |
6 | colProds(X[rows, cols]) w/ expSumLog | 1.839702 | 1.816060 | 1.6473084 | 1.824080 | 1.795931 | 0.1837335 |
4 | colProds(X, rows, cols) w/ expSumLog | 1.845508 | 1.824433 | 1.6547644 | 1.825467 | 1.806075 | 0.1827837 |
Table: Benchmarking of rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on 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 | rowProds_X_S w/ direct | 0.452031 | 0.4696240 | 0.4958651 | 0.4909225 | 0.5074250 | 0.827912 |
5 | rowProds(X[cols, rows]) w/ direct | 0.461406 | 0.4754990 | 0.5027588 | 0.4971750 | 0.5220060 | 0.621393 |
3 | rowProds(X, cols, rows) w/ direct | 0.463121 | 0.4794815 | 0.5041696 | 0.4973430 | 0.5193365 | 0.579636 |
2 | rowProds_X_S w/ expSumLog | 0.817300 | 0.8511180 | 0.9476184 | 0.8749390 | 0.9055550 | 6.048890 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 0.831767 | 0.8556450 | 0.8973632 | 0.8938940 | 0.9186840 | 1.049984 |
4 | rowProds(X, cols, rows) w/ expSumLog | 0.830980 | 0.8594300 | 0.9692100 | 0.8972895 | 0.9322075 | 5.945592 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | rowProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
5 | rowProds(X[cols, rows]) w/ direct | 1.020740 | 1.012510 | 1.013902 | 1.012736 | 1.028735 | 0.7505544 |
3 | rowProds(X, cols, rows) w/ direct | 1.024534 | 1.020990 | 1.016747 | 1.013078 | 1.023474 | 0.7001179 |
2 | rowProds_X_S w/ expSumLog | 1.808062 | 1.812339 | 1.911041 | 1.782234 | 1.784609 | 7.3061992 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 1.840066 | 1.821979 | 1.809692 | 1.820845 | 1.810482 | 1.2682314 |
4 | rowProds(X, cols, rows) w/ expSumLog | 1.838325 | 1.830038 | 1.954584 | 1.827762 | 1.837134 | 7.1814299 |
Figure: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 10x1000 data as well as rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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 | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 443.144 | 470.2645 | 537.1574 | 483.0220 | 503.690 | 5569.495 |
2 | rowProds_X_S w/ direct | 452.031 | 469.6240 | 495.8651 | 490.9225 | 507.425 | 827.912 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.0000000 |
2 | rowProds_X_S w/ direct | 1.020054 | 0.998638 | 0.923128 | 1.016356 | 1.007415 | 0.1486512 |
Figure: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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]
> colStats <- microbenchmark(`colProds_X_S w/ direct` = colProds(X_S, method = "direct", na.rm = FALSE),
+ `colProds_X_S w/ expSumLog` = colProds(X_S, method = "expSumLog", na.rm = FALSE), `colProds(X, rows, cols) w/ direct` = colProds(X,
+ rows = rows, cols = cols, method = "direct", na.rm = FALSE), `colProds(X, rows, cols) w/ expSumLog` = colProds(X,
+ rows = rows, cols = cols, method = "expSumLog", na.rm = FALSE), `colProds(X[rows, cols]) w/ direct` = colProds(X[rows,
+ cols], method = "direct", na.rm = FALSE), `colProds(X[rows, cols]) w/ expSumLog` = colProds(X[rows,
+ cols], method = "expSumLog", na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> rowStats <- microbenchmark(`rowProds_X_S w/ direct` = rowProds(X_S, method = "direct", na.rm = FALSE),
+ `rowProds_X_S w/ expSumLog` = rowProds(X_S, method = "expSumLog", na.rm = FALSE), `rowProds(X, cols, rows) w/ direct` = rowProds(X,
+ rows = cols, cols = rows, method = "direct", na.rm = FALSE), `rowProds(X, cols, rows) w/ expSumLog` = rowProds(X,
+ rows = cols, cols = rows, method = "expSumLog", na.rm = FALSE), `rowProds(X[cols, rows]) w/ direct` = rowProds(X[cols,
+ rows], method = "direct", na.rm = FALSE), `rowProds(X[cols, rows]) w/ expSumLog` = rowProds(X[cols,
+ rows], method = "expSumLog", na.rm = FALSE), unit = "ms")
Table: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 100x1000 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 0.592488 | 0.6090990 | 0.6344606 | 0.6141315 | 0.6258575 | 0.993837 |
3 | colProds(X, rows, cols) w/ direct | 0.742322 | 0.7607325 | 0.9571598 | 0.7680960 | 0.7844370 | 17.610742 |
5 | colProds(X[rows, cols]) w/ direct | 0.745049 | 0.7599220 | 1.1364363 | 0.7681500 | 0.7900630 | 17.967025 |
2 | colProds_X_S w/ expSumLog | 1.901336 | 1.9213535 | 1.9930555 | 1.9552115 | 1.9893900 | 2.613759 |
4 | colProds(X, rows, cols) w/ expSumLog | 2.049062 | 2.0702500 | 2.3208638 | 2.1125090 | 2.1379740 | 18.522131 |
6 | colProds(X[rows, cols]) w/ expSumLog | 2.051187 | 2.0951040 | 2.1664036 | 2.1148060 | 2.1630950 | 2.773091 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
3 | colProds(X, rows, cols) w/ direct | 1.252889 | 1.248947 | 1.508620 | 1.250703 | 1.253380 | 17.719950 |
5 | colProds(X[rows, cols]) w/ direct | 1.257492 | 1.247617 | 1.791185 | 1.250791 | 1.262369 | 18.078442 |
2 | colProds_X_S w/ expSumLog | 3.209071 | 3.154419 | 3.141338 | 3.183702 | 3.178663 | 2.629967 |
4 | colProds(X, rows, cols) w/ expSumLog | 3.458403 | 3.398873 | 3.658011 | 3.439832 | 3.416072 | 18.636991 |
6 | colProds(X[rows, cols]) w/ expSumLog | 3.461989 | 3.439677 | 3.414560 | 3.443572 | 3.456210 | 2.790287 |
Table: Benchmarking of rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on 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 | rowProds_X_S w/ direct | 0.699797 | 0.7166085 | 0.9502186 | 0.7431445 | 0.8371100 | 17.605583 |
3 | rowProds(X, cols, rows) w/ direct | 0.856031 | 0.8707645 | 0.9158276 | 0.8841270 | 0.9101815 | 1.294338 |
5 | rowProds(X[cols, rows]) w/ direct | 0.853192 | 0.8721490 | 1.0934116 | 0.8879830 | 0.9343385 | 17.960586 |
2 | rowProds_X_S w/ expSumLog | 2.013450 | 2.0457340 | 2.3256908 | 2.0748135 | 2.1710325 | 19.122286 |
4 | rowProds(X, cols, rows) w/ expSumLog | 2.153939 | 2.1968730 | 2.4756826 | 2.2229345 | 2.2726920 | 19.692671 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 2.176183 | 2.2032095 | 2.3390805 | 2.2442065 | 2.3320435 | 3.393626 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | rowProds_X_S w/ direct | 1.000000 | 1.000000 | 1.0000000 | 1.000000 | 1.000000 | 1.0000000 |
3 | rowProds(X, cols, rows) w/ direct | 1.223256 | 1.215119 | 0.9638073 | 1.189711 | 1.087290 | 0.0735186 |
5 | rowProds(X[cols, rows]) w/ direct | 1.219199 | 1.217051 | 1.1506948 | 1.194900 | 1.116148 | 1.0201642 |
2 | rowProds_X_S w/ expSumLog | 2.877191 | 2.854744 | 2.4475325 | 2.791938 | 2.593485 | 1.0861490 |
4 | rowProds(X, cols, rows) w/ expSumLog | 3.077948 | 3.065653 | 2.6053823 | 2.991255 | 2.714926 | 1.1185469 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 3.109735 | 3.074495 | 2.4616237 | 3.019879 | 2.785827 | 0.1927585 |
Figure: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 100x1000 data as well as rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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 | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 592.488 | 609.0990 | 634.4606 | 614.1315 | 625.8575 | 993.837 |
2 | rowProds_X_S w/ direct | 699.797 | 716.6085 | 950.2186 | 743.1445 | 837.1100 | 17605.583 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.00000 |
2 | rowProds_X_S w/ direct | 1.181116 | 1.176506 | 1.497679 | 1.210074 | 1.337541 | 17.71476 |
Figure: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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]
> colStats <- microbenchmark(`colProds_X_S w/ direct` = colProds(X_S, method = "direct", na.rm = FALSE),
+ `colProds_X_S w/ expSumLog` = colProds(X_S, method = "expSumLog", na.rm = FALSE), `colProds(X, rows, cols) w/ direct` = colProds(X,
+ rows = rows, cols = cols, method = "direct", na.rm = FALSE), `colProds(X, rows, cols) w/ expSumLog` = colProds(X,
+ rows = rows, cols = cols, method = "expSumLog", na.rm = FALSE), `colProds(X[rows, cols]) w/ direct` = colProds(X[rows,
+ cols], method = "direct", na.rm = FALSE), `colProds(X[rows, cols]) w/ expSumLog` = colProds(X[rows,
+ cols], method = "expSumLog", na.rm = FALSE), unit = "ms")
> X <- t(X)
> X_S <- t(X_S)
> rowStats <- microbenchmark(`rowProds_X_S w/ direct` = rowProds(X_S, method = "direct", na.rm = FALSE),
+ `rowProds_X_S w/ expSumLog` = rowProds(X_S, method = "expSumLog", na.rm = FALSE), `rowProds(X, cols, rows) w/ direct` = rowProds(X,
+ rows = cols, cols = rows, method = "direct", na.rm = FALSE), `rowProds(X, cols, rows) w/ expSumLog` = rowProds(X,
+ rows = cols, cols = rows, method = "expSumLog", na.rm = FALSE), `rowProds(X[cols, rows]) w/ direct` = rowProds(X[cols,
+ rows], method = "direct", na.rm = FALSE), `rowProds(X[cols, rows]) w/ expSumLog` = rowProds(X[cols,
+ rows], method = "expSumLog", na.rm = FALSE), unit = "ms")
Table: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 1000x100 data. The top panel shows times in milliseconds and the bottom panel shows relative times.
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 0.195657 | 0.1991355 | 0.2116703 | 0.204477 | 0.2132795 | 0.261516 |
3 | colProds(X, rows, cols) w/ direct | 0.264200 | 0.2685380 | 0.3576360 | 0.281772 | 0.2891010 | 7.445191 |
5 | colProds(X[rows, cols]) w/ direct | 0.263963 | 0.2708105 | 0.3669107 | 0.283317 | 0.2901915 | 7.748395 |
2 | colProds_X_S w/ expSumLog | 1.225311 | 1.2389830 | 1.2784974 | 1.244929 | 1.2768285 | 1.581018 |
4 | colProds(X, rows, cols) w/ expSumLog | 1.298622 | 1.3047600 | 1.3459490 | 1.316818 | 1.3275575 | 1.765900 |
6 | colProds(X[rows, cols]) w/ expSumLog | 1.297642 | 1.3088775 | 1.4524733 | 1.321813 | 1.4109380 | 8.650490 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
3 | colProds(X, rows, cols) w/ direct | 1.350322 | 1.348519 | 1.689590 | 1.378013 | 1.355503 | 28.469352 |
5 | colProds(X[rows, cols]) w/ direct | 1.349111 | 1.359931 | 1.733407 | 1.385569 | 1.360616 | 29.628761 |
2 | colProds_X_S w/ expSumLog | 6.262546 | 6.221809 | 6.040041 | 6.088357 | 5.986644 | 6.045588 |
4 | colProds(X, rows, cols) w/ expSumLog | 6.637238 | 6.552122 | 6.358704 | 6.439932 | 6.224496 | 6.752550 |
6 | colProds(X[rows, cols]) w/ expSumLog | 6.632229 | 6.572798 | 6.861960 | 6.464363 | 6.615441 | 33.078244 |
Table: Benchmarking of rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on 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 | rowProds_X_S w/ direct | 0.300104 | 0.3051760 | 0.3285277 | 0.3092735 | 0.3281365 | 0.518286 |
3 | rowProds(X, cols, rows) w/ direct | 0.381083 | 0.3941565 | 0.5694519 | 0.4015435 | 0.4208940 | 8.705449 |
5 | rowProds(X[cols, rows]) w/ direct | 0.379665 | 0.3951705 | 0.4271570 | 0.4016900 | 0.4393575 | 0.626979 |
2 | rowProds_X_S w/ expSumLog | 1.344601 | 1.3625165 | 1.4286976 | 1.3694475 | 1.4061200 | 1.931190 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 1.437370 | 1.4508460 | 1.6130615 | 1.4610220 | 1.5417725 | 9.368408 |
4 | rowProds(X, cols, rows) w/ expSumLog | 1.430326 | 1.4508200 | 1.5657706 | 1.4632290 | 1.6107655 | 2.447405 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | rowProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
3 | rowProds(X, cols, rows) w/ direct | 1.269837 | 1.291571 | 1.733345 | 1.298344 | 1.282680 | 16.796612 |
5 | rowProds(X[cols, rows]) w/ direct | 1.265111 | 1.294894 | 1.300216 | 1.298818 | 1.338947 | 1.209716 |
2 | rowProds_X_S w/ expSumLog | 4.480450 | 4.464691 | 4.348789 | 4.427950 | 4.285168 | 3.726109 |
6 | rowProds(X[cols, rows]) w/ expSumLog | 4.789573 | 4.754129 | 4.909971 | 4.724045 | 4.698571 | 18.075750 |
4 | rowProds(X, cols, rows) w/ expSumLog | 4.766101 | 4.754044 | 4.766024 | 4.731181 | 4.908828 | 4.722113 |
Figure: Benchmarking of colProds_X_S w/ direct(), colProds_X_S w/ expSumLog(), colProds(X, rows, cols) w/ direct(), colProds(X, rows, cols) w/ expSumLog(), colProds(X[rows, cols]) w/ direct() and colProds(X[rows, cols]) w/ expSumLog() on 1000x100 data as well as rowProds_X_S w/ direct(), rowProds_X_S w/ expSumLog(), rowProds(X, cols, rows) w/ direct(), rowProds(X, cols, rows) w/ expSumLog(), rowProds(X[cols, rows]) w/ direct() and rowProds(X[cols, rows]) w/ expSumLog() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 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 | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 195.657 | 199.1355 | 211.6703 | 204.4770 | 213.2795 | 261.516 |
2 | rowProds_X_S w/ direct | 300.104 | 305.1760 | 328.5277 | 309.2735 | 328.1365 | 518.286 |
expr | min | lq | mean | median | uq | max | |
---|---|---|---|---|---|---|---|
1 | colProds_X_S w/ direct | 1.000000 | 1.000000 | 1.000000 | 1.00000 | 1.000000 | 1.000000 |
2 | rowProds_X_S w/ direct | 1.533827 | 1.532504 | 1.552072 | 1.51251 | 1.538528 | 1.981852 |
Figure: Benchmarking of colProds_X_S w/ direct() and rowProds_X_S w/ direct() on 1000x100 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
R version 3.6.1 Patched (2019-08-27 r77078)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.3 LTS
Matrix products: default
BLAS: /home/hb/software/R-devel/R-3-6-branch/lib/R/lib/libRblas.so
LAPACK: /home/hb/software/R-devel/R-3-6-branch/lib/R/lib/libRlapack.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] microbenchmark_1.4-6 matrixStats_0.55.0-9000 ggplot2_3.2.1
[4] knitr_1.24 R.devices_2.16.0 R.utils_2.9.0
[7] R.oo_1.22.0 R.methodsS3_1.7.1 history_0.0.0-9002
loaded via a namespace (and not attached):
[1] Biobase_2.45.0 bit64_0.9-7 splines_3.6.1
[4] network_1.15 assertthat_0.2.1 highr_0.8
[7] stats4_3.6.1 blob_1.2.0 robustbase_0.93-5
[10] pillar_1.4.2 RSQLite_2.1.2 backports_1.1.4
[13] lattice_0.20-38 glue_1.3.1 digest_0.6.20
[16] colorspace_1.4-1 sandwich_2.5-1 Matrix_1.2-17
[19] XML_3.98-1.20 lpSolve_5.6.13.3 pkgconfig_2.0.2
[22] genefilter_1.66.0 purrr_0.3.2 ergm_3.10.4
[25] xtable_1.8-4 mvtnorm_1.0-11 scales_1.0.0
[28] tibble_2.1.3 annotate_1.62.0 IRanges_2.18.2
[31] TH.data_1.0-10 withr_2.1.2 BiocGenerics_0.30.0
[34] lazyeval_0.2.2 mime_0.7 survival_2.44-1.1
[37] magrittr_1.5 crayon_1.3.4 statnet.common_4.3.0
[40] memoise_1.1.0 laeken_0.5.0 R.cache_0.13.0
[43] MASS_7.3-51.4 R.rsp_0.43.1 tools_3.6.1
[46] multcomp_1.4-10 S4Vectors_0.22.1 trust_0.1-7
[49] munsell_0.5.0 AnnotationDbi_1.46.1 compiler_3.6.1
[52] rlang_0.4.0 grid_3.6.1 RCurl_1.95-4.12
[55] cwhmisc_6.6 rappdirs_0.3.1 labeling_0.3
[58] bitops_1.0-6 base64enc_0.1-3 boot_1.3-23
[61] gtable_0.3.0 codetools_0.2-16 DBI_1.0.0
[64] markdown_1.1 R6_2.4.0 zoo_1.8-6
[67] dplyr_0.8.3 bit_1.1-14 zeallot_0.1.0
[70] parallel_3.6.1 Rcpp_1.0.2 vctrs_0.2.0
[73] DEoptimR_1.0-8 tidyselect_0.2.5 xfun_0.9
[76] coda_0.19-3
Total processing time was 31.65 secs.
To reproduce this report, do:
html <- matrixStats:::benchmark('colRowProds_subset')
Copyright Dongcan Jiang. Last updated on 2019-09-10 20:48:54 (-0700 UTC). Powered by RSP.
<script> var link = document.createElement('link'); link.rel = 'icon'; link.href = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAA21BMVEUAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8BAf4CAv0DA/wdHeIeHuEfH+AgIN8hId4lJdomJtknJ9g+PsE/P8BAQL9yco10dIt1dYp3d4h4eIeVlWqWlmmXl2iYmGeZmWabm2Tn5xjo6Bfp6Rb39wj4+Af//wA2M9hbAAAASXRSTlMAAQIJCgsMJSYnKD4/QGRlZmhpamtsbautrrCxuru8y8zN5ebn6Pn6+///////////////////////////////////////////LsUNcQAAAS9JREFUOI29k21XgkAQhVcFytdSMqMETU26UVqGmpaiFbL//xc1cAhhwVNf6n5i5z67M2dmYOyfJZUqlVLhkKucG7cgmUZTybDz6g0iDeq51PUr37Ds2cy2/C9NeES5puDjxuUk1xnToZsg8pfA3avHQ3lLIi7iWRrkv/OYtkScxBIMgDee0ALoyxHQBJ68JLCjOtQIMIANF7QG9G9fNnHvisCHBVMKgSJgiz7nE+AoBKrAPA3MgepvgR9TSCasrCKH0eB1wBGBFdCO+nAGjMVGPcQb5bd6mQRegN6+1axOs9nGfYcCtfi4NQosdtH7dB+txFIpXQqN1p9B/asRHToyS0jRgpV7nk4nwcq1BJ+x3Gl/v7S9Wmpp/aGquum7w3ZDyrADFYrl8vHBH+ev9AUASW1dmU4h4wAAAABJRU5ErkJggg==" document.getElementsByTagName('head')[0].appendChild(link); </script>