>X<-data[["10x10"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3164817169.15709258305.05709258305.0Vcells624717747.722267496169.956666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3162930169.05709258305.05709258305.0Vcells624182147.722267496169.956666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
colOrderStats
0.001932
0.0031710
0.0049054
0.005677
0.0060760
0.018188
3
rowQ(t(X))
0.014249
0.0182860
0.0231091
0.022621
0.0257695
0.108739
2
apply+quantile
0.700427
0.7188305
0.7642608
0.733271
0.7637415
1.015273
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.00000
1.000000
1.000000
1.000000
3
rowQ(t(X))
7.375259
5.766635
4.71092
3.984675
4.241195
5.978612
2
apply+quantile
362.539855
226.688899
155.79895
129.165228
125.698074
55.821036
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
rowOrderStats
0.002043
0.0030860
0.0048254
0.005679
0.0060765
0.017788
3
rowQ
0.009882
0.0117680
0.0165022
0.014045
0.0196095
0.084045
2
apply+quantile
0.704532
0.7224165
0.7367775
0.727187
0.7370685
1.119893
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ
4.837004
3.813351
3.419832
2.473147
3.227104
4.724814
2
apply+quantile
344.851689
234.094783
152.685762
128.048424
121.298198
62.957780
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on integer+10x10 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
1
colOrderStats
1.932
3.171
4.90543
5.677
6.0760
18.188
2
rowOrderStats
2.043
3.086
4.82545
5.679
6.0765
17.788
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.0000000
1.0000000
1.000000
1.000000
1.0000000
2
rowOrderStats
1.057453
0.9731946
0.9836956
1.000352
1.000082
0.9780075
Figure: Benchmarking of colOrderStats() and rowOrderStats() on integer+10x10 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
100x100 integer matrix
>X<-data[["100x100"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3161481168.95709258305.05709258305.0Vcells585838844.722267496169.956666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3161471168.95709258305.05709258305.0Vcells586348944.822267496169.956666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
colOrderStats
0.100325
0.105361
0.1146209
0.1111180
0.116927
0.261677
3
rowQ(t(X))
0.257913
0.265549
0.2889740
0.2801135
0.298563
0.722735
2
apply+quantile
7.159544
7.281613
7.9360339
7.4042465
7.797231
24.140317
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ(t(X))
2.570775
2.520373
2.521128
2.520865
2.553414
2.761935
2
apply+quantile
71.363509
69.111090
69.237208
66.634087
66.684602
92.252345
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
rowOrderStats
0.102724
0.1060750
0.1124859
0.1105265
0.1167675
0.143676
3
rowQ
0.241839
0.2493755
0.2636848
0.2596140
0.2692875
0.325968
2
apply+quantile
7.175032
7.3049795
7.8897440
7.4196035
7.8356985
15.390523
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.00000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ
2.35426
2.350936
2.344158
2.348885
2.306185
2.268771
2
apply+quantile
69.84767
68.866175
70.139824
67.129634
67.105132
107.119651
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on integer+100x100 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
rowOrderStats
102.724
106.075
112.4859
110.5265
116.7675
143.676
1
colOrderStats
100.325
105.361
114.6209
111.1180
116.9270
261.677
expr
min
lq
mean
median
uq
max
2
rowOrderStats
1.0000000
1.0000000
1.00000
1.000000
1.000000
1.000000
1
colOrderStats
0.9766462
0.9932689
1.01898
1.005352
1.001366
1.821299
Figure: Benchmarking of colOrderStats() and rowOrderStats() on integer+100x100 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
1000x10 integer matrix
>X<-data[["1000x10"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3162237168.95709258305.05709258305.0Vcells586217144.822267496169.956666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3162227168.95709258305.05709258305.0Vcells586727244.822267496169.956666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
1
colOrderStats
0.088044
0.0918545
0.0941119
0.0944045
0.0953010
0.126456
3
rowQ(t(X))
0.242794
0.2527940
0.2567904
0.2566280
0.2595115
0.291105
2
apply+quantile
1.002920
1.0377160
1.0578490
1.0530305
1.0669350
1.365025
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ(t(X))
2.757644
2.752113
2.728564
2.718387
2.723072
2.302026
2
apply+quantile
11.391123
11.297389
11.240330
11.154452
11.195423
10.794466
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
rowOrderStats
0.092744
0.0960315
0.0982252
0.0982475
0.0992300
0.137773
3
rowQ
0.228148
0.2358790
0.2401534
0.2402835
0.2433455
0.294290
2
apply+quantile
1.002051
1.0393100
1.0524716
1.0524280
1.0648230
1.234466
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ
2.459976
2.456267
2.444928
2.445696
2.452338
2.136050
2
apply+quantile
10.804483
10.822595
10.714887
10.712008
10.730858
8.960145
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on integer+1000x10 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
1
colOrderStats
88.044
91.8545
94.11192
94.4045
95.301
126.456
2
rowOrderStats
92.744
96.0315
98.22517
98.2475
99.230
137.773
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
2
rowOrderStats
1.053382
1.045474
1.043706
1.040708
1.041227
1.089494
Figure: Benchmarking of colOrderStats() and rowOrderStats() on integer+1000x10 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
10x1000 integer matrix
>X<-data[["10x1000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3162442168.95709258305.05709258305.0Vcells586296844.822267496169.956666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3162432168.95709258305.05709258305.0Vcells586806944.822267496169.956666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
colOrderStats
0.096422
0.102217
0.1151726
0.1168315
0.1203185
0.188983
3
rowQ(t(X))
0.258851
0.269841
0.3028486
0.3116975
0.3231130
0.446715
2
apply+quantile
68.249799
69.420339
76.4880245
71.0519800
79.5367195
336.500526
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.00000
1.000000
1.000000
1.000000
3
rowQ(t(X))
2.684564
2.639884
2.62952
2.667924
2.685481
2.363784
2
apply+quantile
707.823930
679.146708
664.11662
608.157731
661.051455
1780.586222
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
1
rowOrderStats
0.097423
0.1014835
0.1138816
0.118211
0.122242
0.142445
3
rowQ
0.243022
0.2486300
0.2737372
0.276842
0.286358
0.602589
2
apply+quantile
68.140618
69.2765190
75.0524350
70.932610
81.330608
98.748079
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.000000
1.000000
1.0000
1.000000
1.00000
1.000000
3
rowQ
2.494503
2.449955
2.4037
2.341931
2.34255
4.230327
2
apply+quantile
699.430504
682.638252
659.0389
600.050841
665.32459
693.236540
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on integer+10x1000 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
1
colOrderStats
96.422
102.2170
115.1726
116.8315
120.3185
188.983
2
rowOrderStats
97.423
101.4835
113.8816
118.2110
122.2420
142.445
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.0000000
1.0000000
1.000000
1.000000
1.000000
2
rowOrderStats
1.010381
0.9928241
0.9887913
1.011808
1.015987
0.753745
Figure: Benchmarking of colOrderStats() and rowOrderStats() on integer+10x1000 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
100x1000 integer matrix
>X<-data[["100x1000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3162655169.05709258305.05709258305.0Vcells586354344.822267496169.956666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3162645169.05709258305.05709258305.0Vcells591364445.222267496169.956666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
colOrderStats
0.982719
0.992317
1.045162
1.006800
1.030469
1.506634
3
rowQ(t(X))
2.397756
2.492323
2.623891
2.556417
2.612141
4.120215
2
apply+quantile
71.642484
73.291158
79.121191
74.524256
86.640305
105.794064
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.00000
1.00000
1.00000
1.000000
1.000000
1.000000
3
rowQ(t(X))
2.43992
2.51162
2.51051
2.539151
2.534903
2.734715
2
apply+quantile
72.90231
73.85861
75.70230
74.020914
84.078476
70.218822
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
rowOrderStats
1.011975
1.017653
1.064200
1.036333
1.059772
1.490149
3
rowQ
2.284843
2.362310
2.437772
2.405922
2.468891
2.934251
2
apply+quantile
70.957223
72.591067
78.896157
74.202615
86.877360
110.068004
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ
2.257806
2.321332
2.290708
2.321572
2.329643
1.969099
2
apply+quantile
70.117565
71.331846
74.136581
71.601131
81.977407
73.863757
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on integer+100x1000 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
1
colOrderStats
982.719
992.317
1045.162
1006.800
1030.469
1506.634
2
rowOrderStats
1011.975
1017.653
1064.200
1036.333
1059.772
1490.149
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.00000
1.000000
1.000000
1.000000
1.000000
1.0000000
2
rowOrderStats
1.02977
1.025532
1.018215
1.029333
1.028436
0.9890584
Figure: Benchmarking of colOrderStats() and rowOrderStats() on integer+100x1000 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
1000x100 integer matrix
>X<-data[["1000x100"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3162867169.05709258305.05709258305.0Vcells586423144.822267496169.956666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3162857169.05709258305.05709258305.0Vcells591433245.222343563170.556666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
colOrderStats
0.908698
0.918584
0.9711281
0.9252755
0.940986
1.500015
3
rowQ(t(X))
2.348175
2.451135
5.0738679
2.5224085
2.658630
246.989893
2
apply+quantile
9.547893
9.749097
10.3127077
9.8414515
10.013106
21.748900
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.00000
3
rowQ(t(X))
2.584109
2.668384
5.224715
2.726116
2.825366
164.65828
2
apply+quantile
10.507224
10.613179
10.619307
10.636239
10.641079
14.49912
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
rowOrderStats
0.954094
0.9646065
1.019438
0.972211
0.992552
1.417984
3
rowQ
2.224715
2.3062425
2.513451
2.337960
2.369690
10.432955
2
apply+quantile
9.573497
9.7311070
10.058221
9.840734
9.990557
17.754467
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ
2.331757
2.390864
2.465525
2.404787
2.387472
7.357597
2
apply+quantile
10.034123
10.088162
9.866433
10.122015
10.065525
12.520922
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on integer+1000x100 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
1
colOrderStats
908.698
918.5840
971.1281
925.2755
940.986
1500.015
2
rowOrderStats
954.094
964.6065
1019.4385
972.2110
992.552
1417.984
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.000000
1.0000
1.0000000
2
rowOrderStats
1.049957
1.050102
1.049747
1.050726
1.0548
0.9453132
Figure: Benchmarking of colOrderStats() and rowOrderStats() on integer+1000x100 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
>X<-data[["10x10"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3163081169.05709258305.05709258305.0Vcells598011945.722343563170.556666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3163059169.05709258305.05709258305.0Vcells598030045.722343563170.556666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
colOrderStats
0.002342
0.0034530
0.0050972
0.0057735
0.0065100
0.017683
3
rowQ(t(X))
0.007403
0.0093375
0.0130076
0.0112980
0.0155150
0.079125
2
apply+quantile
0.700793
0.7078400
0.7190105
0.7146930
0.7235135
0.981725
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.00000
1.000000
1.000000
1.000000
1.000000
3
rowQ(t(X))
3.160973
2.70417
2.551887
1.956872
2.383256
4.474637
2
apply+quantile
299.228437
204.99276
141.058783
123.788517
111.138786
55.518012
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
3
rowQ
0.003801
0.0045715
0.0070744
0.0056585
0.0087095
0.054254
1
rowOrderStats
0.002495
0.0034090
0.0050627
0.0056910
0.0063535
0.019401
2
apply+quantile
0.698146
0.7050025
0.7144014
0.7106970
0.7175685
0.968225
expr
min
lq
mean
median
uq
max
3
rowQ
1.0000000
1.0000000
1.0000000
1.000000
1.0000000
1.0000000
1
rowOrderStats
0.6564062
0.7457071
0.7156417
1.005744
0.7294908
0.3575958
2
apply+quantile
183.6742962
154.2168872
100.9847378
125.598127
82.3891727
17.8461496
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on double+10x10 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
rowOrderStats
2.495
3.409
5.06270
5.6910
6.3535
19.401
1
colOrderStats
2.342
3.453
5.09724
5.7735
6.5100
17.683
expr
min
lq
mean
median
uq
max
2
rowOrderStats
1.0000000
1.000000
1.000000
1.000000
1.000000
1.0000000
1
colOrderStats
0.9386774
1.012907
1.006822
1.014497
1.024632
0.9114479
Figure: Benchmarking of colOrderStats() and rowOrderStats() on double+10x10 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
100x100 double matrix
>X<-data[["100x100"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3163274169.05709258305.05709258305.0Vcells598110545.722343563170.556666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3163264169.05709258305.05709258305.0Vcells599120645.822343563170.556666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
1
colOrderStats
0.151852
0.1541930
0.1640386
0.160511
0.1676685
0.211924
3
rowQ(t(X))
0.233200
0.2365015
0.2516724
0.245102
0.2590480
0.339546
2
apply+quantile
7.209046
7.3151465
7.8090190
7.423569
7.6967770
16.133390
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ(t(X))
1.535706
1.533802
1.534228
1.527011
1.545001
1.602207
2
apply+quantile
47.474159
47.441495
47.604780
46.249597
45.904729
76.128187
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
rowOrderStats
0.153110
0.1548275
0.1636779
0.158818
0.1681450
0.211434
3
rowQ
0.177858
0.1796600
0.1923398
0.188050
0.1972395
0.270269
2
apply+quantile
7.216398
7.2831930
7.9174679
7.430089
7.8410540
16.829715
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.000000
1.000000
1.000000
1.00000
1.000000
1.000000
3
rowQ
1.161635
1.160388
1.175112
1.18406
1.173032
1.278266
2
apply+quantile
47.132114
47.040694
48.372253
46.78367
46.632692
79.597960
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on double+100x100 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
rowOrderStats
153.110
154.8275
163.6779
158.818
168.1450
211.434
1
colOrderStats
151.852
154.1930
164.0385
160.511
167.6685
211.924
expr
min
lq
mean
median
uq
max
2
rowOrderStats
1.0000000
1.0000000
1.000000
1.00000
1.0000000
1.000000
1
colOrderStats
0.9917837
0.9959019
1.002204
1.01066
0.9971661
1.002317
Figure: Benchmarking of colOrderStats() and rowOrderStats() on double+100x100 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
1000x10 double matrix
>X<-data[["1000x10"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3163487169.05709258305.05709258305.0Vcells598218845.722343563170.556666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3163477169.05709258305.05709258305.0Vcells599228945.822343563170.556666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
1
colOrderStats
0.137570
0.1398110
0.1443352
0.1422425
0.1461885
0.202188
3
rowQ(t(X))
0.217051
0.2223905
0.2358092
0.2251030
0.2293180
0.517141
2
apply+quantile
1.112462
1.1351870
1.1728520
1.1503720
1.1706425
1.893386
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.00000
1.000000
1.000000
3
rowQ(t(X))
1.577749
1.590651
1.633761
1.58253
1.568646
2.557723
2
apply+quantile
8.086516
8.119440
8.125889
8.08740
8.007760
9.364483
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
rowOrderStats
0.142481
0.1474750
0.1708429
0.1713020
0.1895015
0.237021
3
rowQ
0.164252
0.1699545
0.1962792
0.1974145
0.2177905
0.278304
2
apply+quantile
1.079233
1.0967530
1.2899622
1.1835395
1.4491930
1.880415
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ
1.152799
1.152429
1.148887
1.152435
1.149281
1.174174
2
apply+quantile
7.574575
7.436874
7.550574
6.909082
7.647396
7.933537
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on double+1000x10 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
1
colOrderStats
137.570
139.811
144.3352
142.2425
146.1885
202.188
2
rowOrderStats
142.481
147.475
170.8429
171.3020
189.5015
237.021
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.00000
2
rowOrderStats
1.035698
1.054817
1.183654
1.204295
1.296282
1.17228
Figure: Benchmarking of colOrderStats() and rowOrderStats() on double+1000x10 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
10x1000 double matrix
>X<-data[["10x1000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3163692169.05709258305.05709258305.0Vcells598232445.722343563170.556666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3163682169.05709258305.05709258305.0Vcells599242545.822343563170.556666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
1
colOrderStats
0.149321
0.1532270
0.1671298
0.163497
0.1740765
0.215217
3
rowQ(t(X))
0.194589
0.1990095
0.2256560
0.231264
0.2459720
0.280529
2
apply+quantile
68.324530
69.5748805
75.6796908
70.979443
83.1125005
109.802889
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.00000
3
rowQ(t(X))
1.303159
1.298789
1.350184
1.414485
1.413011
1.30347
2
apply+quantile
457.568125
454.064104
452.819903
434.132999
477.448136
510.19617
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
rowOrderStats
0.149030
0.1664155
0.1850085
0.1819330
0.1961385
0.322571
3
rowQ
0.176522
0.1978705
0.2197706
0.2178195
0.2362470
0.319586
2
apply+quantile
68.027821
73.9741105
87.2590179
85.0304155
96.0258535
126.942856
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.0000000
3
rowQ
1.184473
1.189015
1.187895
1.197251
1.204491
0.9907462
2
apply+quantile
456.470650
444.514546
471.648646
467.372140
489.581869
393.5346203
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on double+10x1000 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
1
colOrderStats
149.321
153.2270
167.1298
163.497
174.0765
215.217
2
rowOrderStats
149.030
166.4155
185.0085
181.933
196.1385
322.571
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.0000000
1.000000
1.000000
1.000000
1.000000
1.000000
2
rowOrderStats
0.9980512
1.086072
1.106975
1.112761
1.126737
1.498817
Figure: Benchmarking of colOrderStats() and rowOrderStats() on double+10x1000 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
100x1000 double matrix
>X<-data[["100x1000"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3163905169.05709258305.05709258305.0Vcells598359945.722343563170.556666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3163895169.05709258305.05709258305.0Vcells608370046.522343563170.556666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
colOrderStats
1.493198
1.502794
1.575718
1.541372
1.606196
1.890651
3
rowQ(t(X))
2.311336
2.393073
2.504513
2.453865
2.578567
3.096269
2
apply+quantile
72.706505
74.228516
83.233698
76.064604
87.782736
346.141771
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.00000
1.000000
1.000000
1.00000
1.000000
1.000000
3
rowQ(t(X))
1.54791
1.592416
1.589442
1.59200
1.605387
1.637674
2
apply+quantile
48.69180
49.393673
52.822705
49.34863
54.652568
183.080733
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
rowOrderStats
1.513896
1.526642
1.615790
1.551529
1.640509
2.137383
3
rowQ
1.743967
1.751475
1.861983
1.797514
1.950642
2.402143
2
apply+quantile
71.923080
73.557554
81.185077
75.607957
87.977137
111.668584
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ
1.151973
1.147273
1.152367
1.158544
1.189047
1.123871
2
apply+quantile
47.508600
48.182583
50.244826
48.731256
53.627951
52.245472
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on double+100x1000 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
1
colOrderStats
1.493198
1.502794
1.575718
1.541372
1.606196
1.890651
2
rowOrderStats
1.513896
1.526642
1.615790
1.551529
1.640509
2.137383
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.00000
1.000000
1.000000
2
rowOrderStats
1.013861
1.015869
1.025431
1.00659
1.021363
1.130501
Figure: Benchmarking of colOrderStats() and rowOrderStats() on double+100x1000 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.
1000x100 double matrix
>X<-data[["1000x100"]]
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3164117169.05709258305.05709258305.0Vcells598374245.722343563170.556666022432.4>probs<-0.3>which<- round(probs* nrow(X))
>colStats<- microbenchmark(colOrderStats= colOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=2L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), `rowQ(t(X))`= rowQ(t(X),
+which=which), unit="ms")
>X<- t(X)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells3164107169.05709258305.05709258305.0Vcells608384346.522343563170.556666022432.4>rowStats<- microbenchmark(rowOrderStats= rowOrderStats(X, which=which, na.rm=FALSE), `apply+quantile`= apply(X,
+MARGIN=1L, FUN=quantile, probs=probs, na.rm=FALSE, type=3L), rowQ= rowQ(X, which=which),
+unit="ms")
Table: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() 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
1
colOrderStats
1.493593
1.508093
1.619081
1.541671
1.624444
2.405428
3
rowQ(t(X))
1.914679
1.997925
2.163334
2.077514
2.181479
3.283499
2
apply+quantile
10.443364
10.559361
11.512780
10.662634
11.467785
19.872912
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ(t(X))
1.281928
1.324803
1.336149
1.347573
1.342908
1.365037
2
apply+quantile
6.992108
7.001799
7.110686
6.916284
7.059514
8.261695
Table: Benchmarking of rowOrderStats(), apply+quantile() and rowQ() 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
rowOrderStats
1.548613
1.554814
1.612256
1.589789
1.624245
2.050989
3
rowQ
1.751948
1.762935
1.891934
1.787286
1.846548
9.923347
2
apply+quantile
10.460200
10.547797
10.970156
10.590273
10.709793
20.604903
expr
min
lq
mean
median
uq
max
1
rowOrderStats
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
3
rowQ
1.131301
1.133856
1.173470
1.124229
1.136866
4.838323
2
apply+quantile
6.754560
6.783963
6.804227
6.661435
6.593708
10.046326
Figure: Benchmarking of colOrderStats(), apply+quantile() and rowQ(t(X))() on double+1000x100 data as well as rowOrderStats(), apply+quantile() and rowQ() on the same data transposed. Outliers are displayed as crosses. Times are in milliseconds.
Table: Benchmarking of colOrderStats() and rowOrderStats() 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
1
colOrderStats
1.493593
1.508093
1.619081
1.541671
1.624444
2.405428
2
rowOrderStats
1.548613
1.554814
1.612256
1.589789
1.624245
2.050989
expr
min
lq
mean
median
uq
max
1
colOrderStats
1.000000
1.00000
1.0000000
1.000000
1.0000000
1.0000000
2
rowOrderStats
1.036837
1.03098
0.9957845
1.031211
0.9998772
0.8526503
Figure: Benchmarking of colOrderStats() and rowOrderStats() on double+1000x100 data (original and transposed). Outliers are displayed as crosses. Times are in milliseconds.