Разверните for
- цикл путем создания копии тела цикла для каждой итерации цикла
coder.unroll()
разворачивает for
- цикл. coder.unroll
вызов должен быть на линии отдельно сразу предшествованием for
- цикл, который это разворачивает.
Вместо того, чтобы произвести a for
- цикл в сгенерированном коде, развертывание цикла производит копию for
- тело цикла для каждой итерации цикла. В каждой итерации индекс цикла становится постоянным. Чтобы развернуть цикл, генератор кода должен смочь определить границы for-
цикл.
Для маленьких, жестких циклов разворачивание может улучшать производительность. Однако для больших циклов, разворачивание может значительно увеличить время генерации кода и сгенерировать неэффективный код.
coder.unroll
проигнорирован за пределами генерации кода.
Иногда, генератор кода разворачивает for
- цикл даже при том, что вы не используете coder.unroll
. Например, если for
- цикл индексирует в неоднородный массив ячеек или в varargin
или varargout
, генератор кода разворачивает цикл. Путем разворачивания цикла генератор кода может определить значение индекса для каждой итерации цикла. Генератор кода использует эвристику, чтобы определить, когда развернуть for
- цикл. Если эвристике не удается идентифицировать, что разворачивание гарантировано, или если количество итераций цикла превышает предел, сбои генерации кода. В этих случаях можно обеспечить развертывание цикла при помощи coder.unroll
. Смотрите Непостоянный индекс в varargin или varargout в цикле for.