Чтобы ускорить генерацию MEX-функции, задайте использование своевременной (JIT) технологии компиляции. Когда вы выполняете итерации между изменением кода MATLAB®, и тестирование кода MEX, с помощью этой опции может сэкономить время.
По умолчанию MATLAB Coder™ создает функцию MEX C/C++ путем генерации и компиляции кода C/C++. Когда вы задаете JIT-компиляцию, MATLAB CODER создает MEX-функцию JIT, которая содержит абстрактное представление кода MATLAB. Когда вы запускаете MEX-функцию JIT, MATLAB генерирует исполняемый код в памяти.
JIT-компиляция несовместима с определенными функциями генерации кода или опциями. Смотрите Несовместимости JIT-компиляции. Если JIT-компиляция включена, отсутствие предупреждающих сообщений или сообщений об ошибке во время генерации кода указывает на успешную JIT-компиляцию. В отчете генерации кода вкладка Summary указывает, что Типом Сборки является JIT MEX Function
.
Чтобы открыть диалоговое окно Generate, нажмите стрелку Generate.
Установите тип Сборки на MEX
.
Установите флажок JIT-компиляции Использования.
Используйте опцию -jit
команды codegen
. Например, задайте JIT-компиляцию для myfunction
:
codegen -config:mex myfunction -jit -report
Также используйте параметр конфигурации EnableJIT
кода.
cfg = coder.config('mex'); cfg.EnableJIT = true; codegen -config cfg myfunction -report
Следующая таблица обобщает функции генерации кода или опции, которые несовместимы с JIT-компиляцией.
Несовместимость | Тип сообщения | Сгенерированный MEX | Действие |
---|---|---|---|
Пользовательский код | Предупреждение | MEX C/C++ | Чтобы избежать предупреждения, отключите JIT-компиляцию. |
Обновление информации о сборке (coder.updateBuildInfo ) | Предупреждение | MEX C/C++ | Чтобы избежать предупреждения, отключите JIT-компиляцию. |
Использование интерфейса приложения OpenMP для распараллеливания for - циклы (parfor ) | Предупреждение |
| Если вы хотите распараллеливание for - циклы, отключаете JIT-компиляцию. |
Генерация исходного кода C/C++ только | Ошибка | 'none' | Задайте или JIT-компиляцию или генерацию кода C/C++ только. |