Geschwindigkeit der vektorisierten Operation abhängig von der Anzahl der Datenspalten
Warum dauert es länger, einen Vergleich für einen data.frame mit der gleichen Anzahl von Elementen durchzuführen, der bei vektorisierten Operationen jedoch in mehr Spalten angeordnet ist? Nehmen wir dieses einfache Beispiel, in dem wir 0,5 von jedem Element subtrahieren und es dann vergleichen, um festzustellen, ob es <0 ist (im Zusammenhang mit dieser Frage ):
f.df <- function( df , x = 0.5 ){
df <- df - x
df[ df < 0 ] <- 0
return( df )
}
df1 <- data.frame( matrix( runif(1e5) , nrow = 1e2 ) )
df2 <- data.frame( matrix( runif(1e5) , nrow = 1e3 ) )
df3 <- data.frame( matrix( runif(1e5) , nrow = 1e4 ) )
require( microbenchmark )
microbenchmark( f.df( df1 ) , f.df( df2 ) , f.df( df3 ) , times = 10L )
#Unit: milliseconds
# expr min lq median uq max neval
# f.df(df1) 1562.66827 1568.21097 1595.07005 1674.91726 1680.90092 10
# f.df(df2) 95.77452 98.12557 101.31215 190.46906 198.23927 10
# f.df(df3) 16.25295 16.42373 16.74989 17.95621 18.69218 10