R пакет и время выполнения - PullRequest
9 голосов
/ 21 января 2011

Я разработал большую библиотеку функций в R. На данный момент я просто загружаю («источник») функции в начале всех моих скриптов.

Я видел, что могу создавать пакеты.

Мой вопрос: улучшит ли это время выполнения моих функций? (путем преобразования кода переводчика в машинный язык?)

Что делает создание пакета? Создает ли он двоичные файлы?

Спасибо Фреда

1 Ответ

14 голосов
/ 21 января 2011

Пока нет R-компилятора Упаковка вашего R-кода не значительно увеличит время его выполнения.Он также не создаст для вас двоичные файлы - вам нужно собрать их из пакета tarball (или получить CRAN или аналогичный файл, чтобы собрать их для вас).Теперь есть байт-компилятор для R, и пакеты R теперь по умолчанию скомпилированы.Улучшения скорости в целом скромны - не ожидайте скорости, подобной C.

Упаковка кода R делает именно это;он упаковывает код R, код для компиляции (C Fortran и т. д.), справочные страницы, документацию, тесты и т. д. в стандартный формат, который можно распространять среди пользователей и устанавливать / строить на нескольких архитектурах.

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

Если вы не собираетесь распространять вашиТогда у кода есть несколько преимуществ упаковки только для собственного использования, но если вы делаете пакет и пишете документацию и примеры / тесты, вас могут предупредить об изменениях в коде пакета, которые нарушают примеры или приводят к сбою тестов.Таким образом, вы будете лучше осведомлены о надежности своего кода, даже если его используете только вы!

...