เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การจับเวลา - การจองหน่วยความจำล่วงหน้า

ในแบบฝึกหัดที่ผ่านมา การขยายขนาด 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(___ <- ___)
แก้ไขและรันโค้ด