Đo thời gian - cấp phát trước
Trong bài trước, việc tăng kích thước vector mất khoảng 2 giây.
Vậy nếu cấp phát trước vector thì mất bao lâu? Hàm pre_allocate() được định nghĩa bên dưới.
n <- 30000
# Fast code
pre_allocate <- function(n) {
x <- numeric(n) # Pre-allocate
for(i in 1:n)
x[i] <- rnorm(1)
x
}
Bài tập này là một phần của khóa học
Viết mã R hiệu quả
Hướng dẫn bài tập
Hàm pre_allocate() đã có sẵn trong workspace của bạn.
- Dùng
system.time()để xem chạypre_allocate(n)mất bao lâu. Dùng mẹo<-để lưu kết quả vào đối tượngres_allocate.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Use <- with system.time() to store the result as res_allocate
n <- 30000
system.time(___ <- ___)