CommencerCommencer gratuitement

Chronométrage – agrandir un vecteur

Agrandir progressivement un vecteur est un des péchés capitaux en R ; vous devriez toujours l’éviter.

La fonction growing() définie ci-dessous génère n nombres aléatoires selon une loi normale centrée réduite, mais augmente la taille du vecteur à chaque ajout d’élément !

Remarque : Les nombres selon une loi normale centrée réduite sont tirés d’une distribution normale de moyenne 0 et d’écart type 1.

n <- 30000
# Code lent
growing <- function(n) {
    x <- NULL
    for(i in 1:n)
        x <- c(x, rnorm(1))
    x
}

Cet exercice fait partie du cours

Écrire du code R efficace

Afficher le cours

Instructions

La fonction growing() a déjà été définie dans votre espace de travail.

  • À l’aide de la fonction system.time(), mesurez le temps nécessaire pour générer n = 30000 nombres aléatoires selon une loi normale centrée réduite avec la fonction growing(). Utilisez l’astuce avec <- pour stocker le résultat dans un vecteur appelé res_grow.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Use <- with system.time() to store the result as res_grow
system.time(___ <- ___)
Modifier et exécuter le code