Сравниваем производительность разных способов удаления пропущенных значений в R

Довольно часто при анализе данных эмпирических исследований мы сталкиваемся с пропущенными значениями. Далеко не все методы (функции) в R корректно работают с пропущенными данными, поэтому наличие пропущенных значений в данных требует дополнительных манипуляций. При работе с пропущенными данными есть несколько вариантов: удалить их или заменить на какое либо значение (обычно это одна из мер центральной…

Профилирование кода в R

Функции system.time(), benchmark(), microbenchmark() позволяют оценить общее время выполнения выражения и нивелировать возможные вариации за счет множества попыток, однако для более полной оценки и определения стратегии оптимизации кода необходимо также выявлять и «узкие» места в выполняемом коде. К подобным «узким» местам можно отнести те вызовы, которые занимают…

Измерение времени выполнения кода в R

Порой возникает необходимость оценить время выполнения скрипта, функции или участка кода с целью оптимизации или выявления «узких» мест. Это сообщение посвящено обзору инструментов измерения производительности R-кода.

Для измерения времени выполнения выражений (производительности кода) в R существуют следующие инструменты:

  • Функция system.time() из пакета base;
  • Cпециализированные…

Повышение производительности путём компиляции в байт-код

В данном материале рассматривается один из способов ускорения выполнения кода путём компиляции выражений, функций и скриптов R в байт-код. Байт-код - машинно-независимый код низкого уровня, генерируемый транслятором и исполняемый интерпретатором. Большинство инструкций байт-кода эквивалентны одной или нескольким командам ассемблера. Трансляция…

Оптимизируем циклы

В этом материале я попытался собрать известные мне способы ускорения работы циклов. Основные способы, описанные здесь:

  • предварительное создание результирующей переменной с указанием типа и размера;
  • замена цикла на функции, поддерживающие работу с векторами или списками;
  • вынесение операций из тела цикла;
  • компиляция цикла в байт-код;
  • параллелизация…