Эквивалент макросов Stata в Python

Benchmarks

Обновлено для R2015b: repelem теперь самый быстрый для всех размеров данных.


Проверенные функции:

  1. Встроенный MATLAB -in repelem , которая была добавлена ​​в решении R2015a
  2. gnovice cumsum ( rld_cumsum )
  3. Divakar's cumsum + diff решение ( rld_cumsum_diff )
  4. решение accumarray knedlsepp [ knedlsepp5cumsumaccumarray ) из этого сообщения
  5. Реализация на основе наивного цикла ( naive_jit_test.m ) для проверки компилятора «точно в момент времени»

Результаты test_rld.m на R2015b:

Старый временной график с использованием R2015a здесь .

Выводы:

  • repelem всегда самый быстрый примерно в 2 раза.
  • rld_cumsum_diff последовательно быстрее, чем rld_cumsum.
  • repelem является самым быстрым при небольших размерах данных (менее 300-500 элементов)
  • rld_cumsum_diff становится значительно быстрее, чем repelem около 5 & thinsp; 000 элементов
  • repelem становится медленнее, чем rld_cumsum где-то между 30 & thinsp; 000 a nd 300 & thinsp; 000 элементов
  • rld_cumsum имеет примерно такую ​​же производительность, что и knedlsepp5cumsumaccumarray
  • naive_jit_test.m имеет почти постоянную скорость и наравне с rld_cumsum и knedlsepp5cumsumaccumarray для

    Старая диаграмма скорости с использованием R2015a здесь .

    Заключение

    Используйте repelem ниже примерно 5 & thinsp; 000 элементов и выше cumsum + diff.

26
задан Pearly Spencer 26 September 2018 в 19:45
поделиться