การจับเวลา - การจองหน่วยความจำล่วงหน้า
ในแบบฝึกหัดที่ผ่านมา การขยายขนาด vector ใช้เวลาประมาณ 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 Code อย่างมีประสิทธิภาพ
คำแนะนำการฝึกหัด
ฟังก์ชัน pre_allocate() พร้อมใช้งานใน workspace ของคุณแล้ว
- ใช้
system.time()เพื่อวัดเวลาที่ใช้ในการรันpre_allocate(n)โดยใช้เทคนิค<-เพื่อเก็บผลลัพธ์ไว้ในออบเจกต์res_allocate
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Use <- with system.time() to store the result as res_allocate
n <- 30000
system.time(___ <- ___)