Вимірювання часу — попереднє виділення
У попередній вправі нарощування вектора зайняло приблизно 2 секунди.
Скільки часу потрібно, якщо ми заздалегідь виділимо пам'ять для вектора? Функція pre_allocate() визначена нижче.
n <- 30000
# Fast code
pre_allocate <- function(n) {
x <- numeric(n) # Pre-allocate
for(i in 1:n)
x[i] <- rnorm(1)
x
}
Ця вправа є частиною курсу
Ефективне програмування R
Інструкції до вправи
Функція pre_allocate() доступна у вашому робочому середовищі.
- За допомогою
system.time()визначте, скільки часу займає виконанняpre_allocate(n). Використайте прийом із<-, щоб зберегти результат в об'єктіres_allocate.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Use <- with system.time() to store the result as res_allocate
n <- 30000
system.time(___ <- ___)