Solipsismo, comunidad y rendimiento
Desde esta bitácora hemos seguido atentamente el a veces espinoso asunto del rendimiento de R. De ello es muestra entradas como ésta. Por eso retomamos el asunto para comentar desde una óptica distinta un análisis publicado hace un mes cuyo autor estudia la ineficiencia de funciones básicas como la media y otras similares.
Y llega a conclusiones que no es necesario manifestar explícitamente a quien ejecute esto en R:
x <- rnorm(50000)
foo.mean <- function(){ mean(x) }
foo.mean.int <- function(){ .Internal(mean(x)) }
foo.sum <- function(){ sum(x) / length(x) }
system.time(tmp <- replicate(10000, foo.mean()))
system.time(tmp <- replicate(10000, foo.mean.int()))
system.time(tmp <- replicate(10000, foo.sum()))
Efectivamente, la media es lenta: pierde mucho tiempo en comprobaciones, revisando opciones y casos particulares. Además, es una función genérica que tiene que encontrar el método adecuado. Todo eso supone, efectivamente, un sobrecoste.