lunes, 2 de febrero de 2015

Profiling R


Algo que me resulto sumamente interesante de R es que el lenguaje tiene unas funciones para buscar problemas de performance. Me parece muy buena idea, permite que sin herramientas visuales podemos verificar la performance.

La función system.time nos permite saber cuanto demora una función determinada, veamos un ejemplo:

system.time(for(i in 1:m) t.test(X[i, ] ~ grp)$stat)
#>    user  system elapsed
#>   1.575   0.011   1.599
system.time(
  for(i in 1:m) t.test(X[i, grp == 1], X[i, grp == 2])$stat
)
#>    user  system elapsed
#>   0.406   0.000   0.408

Otra función que nos permite buscar problema de performance es Rprof. Con Rprof podemos setear R para que funcione a modo de profiling. De esta forma R se ejecuta el código, de un modo que nos indica el tiempo que se ejecutan las funciones. Es ideal para buscar problemas de performance. 

Luego de esta pequeña introducción a código para hacer profile, me quedo con la idea de introducir funciones que nos permiten buscar problemas de performance. Es una gran idea, los lenguajes podrían copiar esta idea. Y a la vez eliminan la necesidad de IDEs. 

Dejo links: 
http://www.stat.berkeley.edu/~nolan/stat133/Fall05/lectures/profilingEx.html