หลักการทั่วไป: การจัดสรรหน่วยความจำ

การเขียน R Code อย่างมีประสิทธิภาพ

Colin Gillespie

Jumping Rivers & Newcastle University

การเขียน R Code อย่างมีประสิทธิภาพ

ถ้าเราเขียนโปรแกรมด้วย C...

เราต้องจัดการหน่วยความจำเอง
// C code: request memory for a number
x = (double *) malloc(sizeof(double));

// Free the memory
free(x);
  • ใน R การจัดสรรหน่วยความจำเกิดขึ้นอัตโนมัติ
  • R จัดสรรหน่วยความจำใน RAM เพื่อเก็บตัวแปร
  • ลดการกำหนดตัวแปรให้น้อยลงเพื่อเพิ่มความเร็ว
การเขียน R Code อย่างมีประสิทธิภาพ

ตัวอย่าง: ลำดับของจำนวนเต็ม

$$ 1, 2, \ldots, n $$

วิธีที่ชัดเจนและดีที่สุด
## Method 1
x <- 1:n
ยังพอใช้ได้
## Method 2
x <- vector("numeric", n) # length n
for(i in 1:n)
    x[i] <- i
ห้ามทำแบบนี้เด็ดขาด!
## Method 3
x <- NULL # Length zero
for(i in 1:n)
    x <- c(x, i)
การเขียน R Code อย่างมีประสิทธิภาพ

การวัดประสิทธิภาพ

  • วิธีที่ 1: 1:n
  • วิธีที่ 2: จองหน่วยความจำล่วงหน้า
  • วิธีที่ 3: ขยาย Vector ทีละขั้น
เวลาในหน่วยวินาที
n 1 2 3
$10^5$ 0.00 0.02 0.2
$10^6$ 0.00 0.2 30
$10^7$ 0.00 2 3800

การเขียน R Code อย่างมีประสิทธิภาพ

ยินดีต้อนรับสู่ R club!

กฎข้อแรกของ R club: ห้ามขยาย vector โดยเด็ดขาด

การเขียน R Code อย่างมีประสิทธิภาพ

มาฝึกกันเถอะ!

การเขียน R Code อย่างมีประสิทธิภาพ

Preparing Video For Download...