Итоги главы: Монополия

Эффективный код на R

Colin Gillespie

Jumping Rivers & Newcastle University

Фреймы данных vs. матрицы

# 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)
  • Общее время симуляции: с 2 секунд до 0,5 секунды
  • Создание фрейма данных медленнее, чем матрицы
  • В симуляции Монополии было создано 10 000 фреймов данных
Эффективный код на R

apply vs. rowSums

# Original
total <- apply(df, 1, sum)
# Updated
total <- rowSums(df)
  • С 0,5 секунды до 0,16 секунды — ускорение в 3 раза
Эффективный код на R

& vs. &&

# Original
is_double[1] & is_double[2] & is_double[3]
# Updated
is_double[1] && is_double[2] && is_double[3]
  • Незначительное ускорение
  • С 0,16 секунды до 0,15 секунды
Эффективный код на R

Обзор

Метод Время (сек) Ускорение
Original 2.00 1.0
Matrix 0.50 4.0
Matrix + rowSums 0.20 10.0
Matrix + rowSums + && 0.19 10.5
Эффективный код на R

Давайте потренируемся!

Эффективный код на R

Preparing Video For Download...