Dies ist ein Beispiel für den Vergleich der Zeilenextraktion aus großen Matrizen, spärlich und dicht, unter Verwendung der Matrix package gegenüber der regulären base-matrix Klasse.Extraktionsgeschwindigkeit im Matrixpaket ist sehr langsam im Vergleich zur regulären Matrixklasse
Für dichte Matrizen der Geschwindigkeit ist fast 395-mal schneller für die Basisklasse matrix
:
library(Matrix)
library(microbenchmark)
## row extraction in dense matrices
D1<-matrix(rnorm(2000^2), 2000, 2000)
D2<-Matrix(D1)
> microbenchmark(D1[1,], D2[1,])
Unit: microseconds
expr min lq mean median uq max neval
D1[1, ] 14.437 15.9205 31.72903 31.4835 46.907 75.101 100
D2[1, ] 5730.730 5744.0130 5905.11338 5777.3570 5851.083 7447.118 100
Für schwach besetzte Matrizen es fast 63 Mal für matrix
wieder an ist.
## row extraction in sparse matrices
S1<-matrix(1*(runif(2000^2)<0.1), 2000, 2000)
S2<-Matrix(S1, sparse = TRUE)
microbenchmark(S1[1,], S2[1,])
Unit: microseconds
expr min lq mean median uq max neval
S1[1, ] 15.225 16.417 28.15698 17.7655 42.9905 45.692 100
S2[1, ] 1652.362 1670.507 1771.51695 1774.1180 1787.0410 5241.863 100
Warum die Geschwindigkeit Diskrepanz, und ist es eine Möglichkeit, Extraktion in Matrix Paket zu beschleunigen?