Rekapitulace Monopoly

Efektivní kód v R

Colin Gillespie

Jumping Rivers & Newcastle University

Datové rámce vs. matice

# Original
rolls <- data.frame(d1 = sample(1:6, 3, replace = TRUE),
                    d2 = sample(1:6, 3, replace = TRUE))
# Updated
rolls <- matrix(sample(1:6, 6, replace = TRUE), ncol = 2)
  • Celková doba simulace Monopoly: ze 2 sekund na 0,5 sekundy
  • Vytvoření datového rámce je pomalejší než matice
  • V simulaci Monopoly jsme vytvořili 10 000 datových rámců
Efektivní kód v R

apply vs. rowSums

# Original
total <- apply(df, 1, sum)
# Updated
total <- rowSums(df)
  • Z 0,5 sekundy na 0,16 sekundy – 3násobné zrychlení
Efektivní kód v R

& vs. &&

# Original
is_double[1] & is_double[2] & is_double[3]
# Updated
is_double[1] && is_double[2] && is_double[3]
  • Omezené zrychlení
  • Z 0,16 sekundy na 0,15 sekundy
Efektivní kód v R

Přehled

Metoda Čas (s) Zrychlení
Originál 2,00 1,0
Matice 0,50 4,0
Matice + rowSums 0,20 10,0
Matice + rowSums + && 0,19 10,5
Efektivní kód v R

Pojďme si procvičit!

Efektivní kód v R

Preparing Video For Download...