Nguyên tắc chung: Cấp phát bộ nhớ

Viết mã R hiệu quả

Colin Gillespie

Jumping Rivers & Newcastle University

Viết mã R hiệu quả

Nếu ta lập trình bằng C...

Ta phải tự quản lý cấp phát bộ nhớ
// C code: request memory for a number
x = (double *) malloc(sizeof(double));

// Free the memory
free(x);
  • Trong R, cấp phát bộ nhớ diễn ra tự động
  • R cấp phát RAM để lưu biến
  • Giảm số lần gán biến để tăng tốc
Viết mã R hiệu quả

Ví dụ: Dãy số nguyên

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

Cách rõ ràng và tốt nhất
## Method 1
x <- 1:n
Cũng ổn
## Method 2
x <- vector("numeric", n) # length n
for(i in 1:n)
    x[i] <- i
Đừng bao giờ làm thế này!
## Method 3
x <- NULL # Length zero
for(i in 1:n)
    x <- c(x, i)
Viết mã R hiệu quả

Đo hiệu năng

  • Cách 1: 1:n
  • Cách 2: Cấp phát trước
  • Cách 3: Mở rộng dần
Thời gian (giây)
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

Viết mã R hiệu quả

Chào mừng đến với câu lạc bộ R!

Quy tắc đầu tiên của câu lạc bộ R: đừng bao giờ mở rộng vector theo kiểu nối thêm.

Viết mã R hiệu quả

Cùng luyện tập nào!

Viết mã R hiệu quả

Preparing Video For Download...