การจับเวลา - การขยาย Vector
การขยาย vector ทีละตัวถือเป็นหนึ่งในข้อผิดพลาดร้ายแรงใน R ที่ควรหลีกเลี่ยงเสมอ
ฟังก์ชัน growing() ที่กำหนดไว้ด้านล่างนี้สร้างตัวเลขสุ่มแบบ standard normal จำนวน n ตัว แต่ขยายขนาดของ vector ทุกครั้งที่เพิ่มสมาชิกใหม่เข้าไป!
หมายเหตุ: ตัวเลข standard normal คือตัวเลขที่สุ่มมาจากการแจกแจงปกติที่มีค่าเฉลี่ย 0 และส่วนเบี่ยงเบนมาตรฐาน 1
n <- 30000
# Slow code
growing <- function(n) {
x <- NULL
for(i in 1:n)
x <- c(x, rnorm(1))
x
}
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียน R Code อย่างมีประสิทธิภาพ
คำแนะนำการฝึกหัด
ฟังก์ชัน growing() ถูกกำหนดไว้ใน workspace ของคุณแล้ว
- ใช้ฟังก์ชัน
system.time()เพื่อวัดเวลาที่ใช้ในการสร้างตัวเลขสุ่มแบบ standard normal จำนวนn = 30000ตัว ด้วยฟังก์ชันgrowing()จากนั้นใช้เทคนิค<-เพื่อเก็บผลลัพธ์ไว้ใน vector ชื่อres_grow
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Use <- with system.time() to store the result as res_grow
system.time(___ <- ___)