Zasada ogólna: Alokacja pamięci

Wydajny kod w R

Colin Gillespie

Jumping Rivers & Newcastle University

Wydajny kod w R

Gdybyśmy programowali w C...

Sami zarządzamy alokacją pamięci
// C code: request memory for a number
x = (double *) malloc(sizeof(double));

// Free the memory
free(x);
  • W R alokacja pamięci odbywa się automatycznie
  • R przydziela pamięć RAM do przechowywania zmiennych
  • Aby przyspieszyć działanie, należy minimalizować przypisywanie zmiennych
Wydajny kod w R

Przykład: Ciąg liczb całkowitych

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

Najlepszy i oczywisty sposób
## Method 1
x <- 1:n
Niezbyt zły
## Method 2
x <- vector("numeric", n) # length n
for(i in 1:n)
    x[i] <- i
Nigdy tego nie rób!
## Method 3
x <- NULL # Length zero
for(i in 1:n)
    x <- c(x, i)
Wydajny kod w R

Benchmarking

  • Metoda 1: 1:n
  • Metoda 2: Prealokacja
  • Metoda 3: Rozrastanie
Czas w sekundach
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

Wydajny kod w R

Witamy w klubie R!

Pierwsza zasada klubu R: nigdy, przenigdy nie rozrastaj wektora.

Wydajny kod w R

Czas na ćwiczenia!

Wydajny kod w R

Preparing Video For Download...