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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage