Pomiar czasu – rozrastający się wektor
Rozrastający się wektor to jeden z grzechów głównych w R – zawsze należy go unikać.
Zdefiniowana poniżej funkcja growing() generuje n losowych liczb ze standardowego rozkładu normalnego, ale za każdym razem, gdy dodawany jest nowy element, powiększa rozmiar wektora!
Uwaga: Standardowy rozkład normalny to rozkład o średniej 0 i odchyleniu standardowym 1.
n <- 30000
# Wolny kod
growing <- function(n) {
x <- NULL
for(i in 1:n)
x <- c(x, rnorm(1))
x
}
To ćwiczenie jest częścią kursu
Wydajny kod w R
Instrukcje do ćwiczenia
Funkcja growing() jest już zdefiniowana w twoim środowisku pracy.
- Używając funkcji
system.time(), sprawdź, ile czasu zajmuje wygenerowanien = 30000losowych liczb ze standardowego rozkładu normalnego za pomocą funkcjigrowing(). Skorzystaj z operatora<-, aby zapisać wynik w wektorze o nazwieres_grow.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Use <- with system.time() to store the result as res_grow
system.time(___ <- ___)