Загальний принцип: розподіл пам'яті

Ефективне програмування R

Colin Gillespie

Jumping Rivers & Newcastle University

Ефективне програмування R

Якби ми програмували на C...

Ми керуємо розподілом пам'яті
// C code: request memory for a number
x = (double *) malloc(sizeof(double));

// Free the memory
free(x);
  • В R розподіл пам'яті відбувається автоматично
  • R виділяє пам'ять у RAM для зберігання змінних
  • Мінімізуйте присвоєння змінних заради швидкості
Ефективне програмування R

Приклад: послідовність цілих

$$ 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

Бенчмаркінг

  • Метод 1: 1:n
  • Метод 2: Попереднє виділення
  • Метод 3: Зростання
Час у секундах
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

Вітаємо в клубі R!

Перше правило клубу R: ніколи не нарощуйте вектор.

Ефективне програмування R

Давайте потренуємось!

Ефективне програмування R

Preparing Video For Download...