R:Оптимизация/Компиляция в байт-код — различия между версиями
м (→Параметры компиляции) |
м (→Параметры компиляции) |
||
Строка 11: | Строка 11: | ||
== Параметры компиляции == | == Параметры компиляции == | ||
− | Все рассмотренные ранее функции из пакета {{r-package|compiler|core=true}} имеют опции, которые могут быть переданы в качестве аргументов функциям компиляции (аргумент <code>options</code>), или заданы глобально с помощью функции <code>setCompilerOptions()</code>. | + | Все рассмотренные ранее функции из пакета {{r-package|compiler|core=true}} имеют опции, которые могут быть переданы в качестве аргументов функциям компиляции (аргумент <code>options</code>), или заданы глобально с помощью функции <code>setCompilerOptions()</code>. |
− | * <code>optimize</code> --- определяет уровень оптимизации | + | Рассмотрим эти опции: |
− | * <code>suppressAll</code> --- управляет сообщениями | + | |
− | * <code>suppressUndefined</code> --- управление сообщения о неопределённых (undefined) переменных | + | * <code>optimize</code> --- определяет уровень оптимизации: принимает значения от 0 до 3 (по умолчанию 2); |
+ | * <code>suppressAll</code> --- управляет сообщениями: принимает значения <code>TRUE</code> или <code>FALSE</code> (по умолчанию code>FALSE</code>); | ||
+ | * <code>suppressUndefined</code> --- управление сообщения о неопределённых (undefined) переменных: может принимать значения <code>TRUE</code> или список имён переменных (по умолчанию ".Generic", .Method", ".Random.seed", ".self"). | ||
+ | |||
+ | Получить текущее значение глобальных опций компиляции можно с помощью функции <code>getCompilerOption()</code>: | ||
+ | |||
+ | {{r-code|code=<nowiki>> getCompilerOption("optimize") | ||
+ | [1] 2 | ||
+ | > getCompilerOption("suppressAll") | ||
+ | [1] FALSE | ||
+ | > getCompilerOption("suppressUndefined") | ||
+ | [1] ".Generic" ".Method" ".Random.seed" ".self"</nowiki>}} | ||
== Компиляция функций и выражений == | == Компиляция функций и выражений == |
Версия 08:59, 4 мая 2014
|
Материал «R:Оптимизация/Компиляция в байт-код», созданный автором Артём Клевцов, публикуется на условиях лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная. | |
|
Перед использованием функций из пакетов их необходимо предварительно установить и загрузить: КодR <syntaxhighlight lang="r">> install.packages(pkgs = "pkgname") > library(package = "pkgname")</syntaxhighlight> |
В данном материале рассматривается один из способов ускорения выполнения кода путём компиляции в байт-код. Байт-код - машинно-независимый код низкого уровня, генерируемый транслятором и исполняемый интерпретатором. Большинство инструкций байт-кода эквивалентны одной или нескольким командам ассемблера. Трансляция в байт-код занимает промежуточное положение между компиляцией в машинный код и интерпретацией.
Программа на байт-коде обычно выполняется интерпретатором байт-кода (обычно он называется виртуальной машиной, поскольку подобен компьютеру). Преимущество - в портируемости, т. е. один и тот же байт-код может исполняться на разных платформах и архитектурах. То же самое преимущество дают интерпретируемые языки. Однако, поскольку байт-код обычно менее абстрактный, более компактный и более «компьютерный», чем исходный код, эффективность байт-кода обычно выше, чем чистая интерпретация исходного кода, предназначенного для правки человеком.
В составе базовых пакетов R поставляется пакет compiler
, который входит состав ядра R, но не загружается по умолчанию при старте R-сессии. Данный пакет включает в себя ряд функций для компиляции R-кода в байт-код.
Параметры компиляции
Все рассмотренные ранее функции из пакета compiler
имеют опции, которые могут быть переданы в качестве аргументов функциям компиляции (аргумент options
), или заданы глобально с помощью функции setCompilerOptions()
.
Рассмотрим эти опции:
-
optimize
--- определяет уровень оптимизации: принимает значения от 0 до 3 (по умолчанию 2); -
suppressAll
--- управляет сообщениями: принимает значенияTRUE
илиFALSE
(по умолчанию code>FALSE</code>); -
suppressUndefined
--- управление сообщения о неопределённых (undefined) переменных: может принимать значенияTRUE
или список имён переменных (по умолчанию ".Generic", .Method", ".Random.seed", ".self").
Получить текущее значение глобальных опций компиляции можно с помощью функции getCompilerOption()
:
<syntaxhighlight lang="r">> getCompilerOption("optimize") [1] 2 > getCompilerOption("suppressAll") [1] FALSE > getCompilerOption("suppressUndefined") [1] ".Generic" ".Method" ".Random.seed" ".self"</syntaxhighlight>