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

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

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

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

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

Создаём пустые переменные

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

В этом…

Подсчет пересекающихся временных интервалов

Одна из моих недавних задач - подсчитать количество пересеченний сессий пользователя с другими пользователями. Вроде бы тривиальная задача на count overlaps, однако за решением пришлось обращаться аж к пакетам для Bioconductor. Простейший код, начиная с установки соответствующего пакета, выглядит следующим образом:

source("http://bioconductor.org/biocLite.R")
biocLite("IRanges")
library(IRanges)

Далее…

Оформление R-кода

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

К сожалению, для языка R нет чётких правил оформления кода. В качестве источников таких правил обычно используется…