Principiu general: Alocarea memoriei

Scrierea codului R eficient

Colin Gillespie

Jumping Rivers & Newcastle University

Scrierea codului R eficient

Dacă am programa în C...

Noi gestionăm alocarea memoriei
// C code: request memory for a number
x = (double *) malloc(sizeof(double));

// Free the memory
free(x);
  • În R, alocarea memoriei se face automat
  • R alocă memorie în RAM pentru a stoca variabile
  • Minimizați asignările de variabile pentru viteză
Scrierea codului R eficient

Exemplu: Secvență de numere întregi

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

Cel mai simplu și mai bun mod
## Method 1
x <- 1:n
Nu este rău
## Method 2
x <- vector("numeric", n) # length n
for(i in 1:n)
    x[i] <- i
Nu faceți niciodată asta!
## Method 3
x <- NULL # Length zero
for(i in 1:n)
    x <- c(x, i)
Scrierea codului R eficient

Benchmarking

  • Metoda 1: 1:n
  • Metoda 2: Prealoca
  • Metoda 3: Creștere
Timp în secunde
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

Scrierea codului R eficient

Bun venit în clubul R!

Prima regulă a clubului R: nu măriți niciodată un vector.

Scrierea codului R eficient

Să exersăm!

Scrierea codului R eficient

Preparing Video For Download...