Obecný princip: Alokace paměti

Efektivní kód v R

Colin Gillespie

Jumping Rivers & Newcastle University

Efektivní kód v R

Kdybychom programovali v C...

O alokaci paměti rozhodujeme sami
// C code: request memory for a number
x = (double *) malloc(sizeof(double));

// Free the memory
free(x);
  • V R probíhá alokace paměti automaticky
  • R alokuje paměť v RAM pro ukládání proměnných
  • Pro vyšší rychlost minimalizujte přiřazování proměnných
Efektivní kód v R

Příklad: Posloupnost celých čísel

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

Nejočividnější a nejlepší způsob
## Method 1
x <- 1:n
Není tak špatný
## Method 2
x <- vector("numeric", n) # length n
for(i in 1:n)
    x[i] <- i
Toto nikdy nedělejte!
## Method 3
x <- NULL # Length zero
for(i in 1:n)
    x <- c(x, i)
Efektivní kód v R

Benchmarking

  • Metoda 1: 1:n
  • Metoda 2: Prealokace
  • Metoda 3: Rozrůstání
Čas v sekundách
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

Efektivní kód v R

Vítejte v R klubu!

První pravidlo R klubu: nikdy, za žádných okolností nerozrůstejte vektor.

Efektivní kód v R

Pojďme procvičovat!

Efektivní kód v R

Preparing Video For Download...