Recapitulare Monopoly

Scrierea codului R eficient

Colin Gillespie

Jumping Rivers & Newcastle University

Data frame-uri vs. matrice

# 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)
  • Timp total simulare Monopoly: de la 2 secunde la 0,5 secunde
  • Crearea unui data frame este mai lentă decât a unei matrice
  • În simularea Monopoly, am creat 10.000 de data frame-uri
Scrierea codului R eficient

apply vs. rowSums

# Original
total <- apply(df, 1, sum)
# Updated
total <- rowSums(df)
  • De la 0,5 secunde la 0,16 secunde - viteză de 3 ori mai mare
Scrierea codului R eficient

& vs. &&

# Original
is_double[1] & is_double[2] & is_double[3]
# Updated
is_double[1] && is_double[2] && is_double[3]
  • Îmbunătățire limitată a vitezei
  • De la 0,16 secunde la 0,15 secunde
Scrierea codului R eficient

Prezentare generală

Metodă Timp (sec) Îmbunătățire
Original 2,00 1,0
Matrice 0,50 4,0
Matrice + rowSums 0,20 10,0
Matrice + rowSums + && 0,19 10,5
Scrierea codului R eficient

Să exersăm!

Scrierea codului R eficient

Preparing Video For Download...