Pengukuran waktu - menumbuhkan vektor
Menumbuhkan vektor adalah salah satu dosa besar di R; Anda harus selalu menghindarinya.
Fungsi growing() yang didefinisikan di bawah ini menghasilkan n angka acak bertipe standar normal, tetapi menambah ukuran vektor setiap kali sebuah elemen ditambahkan!
Catatan: Angka standar normal adalah angka yang diambil dari distribusi normal dengan mean 0 dan simpangan baku 1.
n <- 30000
# Slow code
growing <- function(n) {
x <- NULL
for(i in 1:n)
x <- c(x, rnorm(1))
x
}
Latihan ini adalah bagian dari kursus
Menulis Kode R yang Efisien
Petunjuk latihan
Fungsi growing() sudah didefinisikan di workspace Anda.
- Dengan menggunakan fungsi
system.time(), cari berapa lama waktu yang dibutuhkan untuk menghasilkann = 30000angka acak standar normal menggunakan fungsigrowing(). Gunakan trik<-untuk menyimpan hasilnya ke dalam sebuah vektor bernamares_grow.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Use <- with system.time() to store the result as res_grow
system.time(___ <- ___)