
#---------------------------------------------------------------#
## para progresar                                             ##

## getAnywhere() para inspeccionar las fuentes                ##
getAnywhere(rm) # contenido de rm

#---------------------------------------------------------------#
## debug                                                       ##

debug(rm())     # para depurar una función 
rm()            # lanzar en modo debug
                # n para siguiente (siguiente declaración)
                # o dar una variable para obtener su valor
                
                # para evitar errores:
                # opciones(error=utils::recover)
                # para volver al modo normal de manejo de errores
                # options(error=NULL)

undebug(rm())   # fin de la depuración

#---------------------------------------------------------------#
## profiling (performances)   del código                          ##  

Rprof()             # lanza el análisis
                    # resultado en Rprof.out
for (i in 1:100000) { dummy <- i*i} # lo que perfilamos
Rprof(NULL)         # detiene el análisis
summaryRprof()      # resultado

#---------------------------------------------------------------#
# otra librería muy fácil de utilizar                  ##

library(microbenchmark)
microbenchmark(for (i in 1:10000) { toto  <- i*i},
               for (i in 1:1000)  { toto  <- i*i},
               for (i in 1:10)    { toto  <- i*i},
               for (i in 1:1)     { toto  <- i*i}
               )
               # estos 4 momentos son proporcionales
#---------------------------------------------------------------#


