Măsurarea timpului – extinderea unui vector
Extinderea unui vector este unul dintre cele mai mari păcate în R; evit-o întotdeauna.
Funcția growing() definită mai jos generează n numere aleatoare standard normale, însă mărește dimensiunea vectorului de fiecare dată când se adaugă un element!
Notă: Numerele standard normale sunt numere extrase dintr-o distribuție normală cu media 0 și abaterea standard 1.
n <- 30000
# Cod lent
growing <- function(n) {
x <- NULL
for(i in 1:n)
x <- c(x, rnorm(1))
x
}
Acest exercițiu face parte din cursul
Scrierea codului R eficient
Instrucțiuni pentru exercițiu
Funcția growing() a fost deja definită în spațiul tău de lucru.
- Folosind funcția
system.time(), măsoară cât timp durează generarea an = 30000numere aleatoare standard normale cu funcțiagrowing(). Folosește trucul<-pentru a stoca rezultatul într-un vector numitres_grow.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Use <- with system.time() to store the result as res_grow
system.time(___ <- ___)