Principe général : allocation de mémoire

Écrire du code R efficace

Colin Gillespie

Jumping Rivers & Newcastle University

Écrire du code R efficace

Si nous programmions en C…

Nous gérons l'allocation de mémoire
// C code: request memory for a number
x = (double *) malloc(sizeof(double));

// Free the memory
free(x);
  • En R, l'allocation mémoire est automatique
  • R réserve de la mémoire en RAM pour stocker les variables
  • Minimisez les affectations de variables pour accélérer
Écrire du code R efficace

Exemple : suite d'entiers

$$ 1, 2, \ldots, n $$

La façon évidente et optimale
## Method 1
x <- 1:n
Pas si mal
## Method 2
x <- vector("numeric", n) # length n
for(i in 1:n)
    x[i] <- i
À ne jamais faire !
## Method 3
x <- NULL # Length zero
for(i in 1:n)
    x <- c(x, i)
Écrire du code R efficace

Mesures de performance

  • Méthode 1 : 1:n
  • Méthode 2 : préallouer
  • Méthode 3 : croissance
Temps en secondes
n 1 2 3
$10^5$ 0.00 0.02 0.2
$10^6$ 0.00 0.2 30
$10^7$ 0.00 2 3800

Écrire du code R efficace

Bienvenue au « club R » !

La première règle du « club R » : ne faites jamais croître un vecteur.

Écrire du code R efficace

Passons à la pratique !

Écrire du code R efficace

Preparing Video For Download...