Генератор кода производит поддерживающий код для таких ситуаций:
Результат целочисленной операции падает за пределы области значений, которые может представлять тип данных, известного как целочисленное переполнение.
Операция генерирует нефинитные значения (inf
и NaN
).
Если вы знаете, что эти ситуации не происходят, чтобы уменьшить размер сгенерированного кода и увеличить его скорость, можно подавить генерацию поддерживающего кода. Однако, если вы подавляете генерацию поддерживающего кода и возникает одна из этих ситуаций, поведение сгенерированного кода может не совпадать с поведением исходного MATLAB® код.
По умолчанию генератор кода производит код, чтобы обработать целочисленное переполнение. Переполнения достигает минимального или максимального значения, которое может представлять тип данных. Если вы знаете, что ваш код не зависит от поддержки целочисленного переполнения, для повышения эффективности можно отключить генерацию кода, который обрабатывает целочисленное переполнение. Чтобы отключить поддержку целочисленного переполнения:
В объекте строения генерации кода для MEX или автономного кода (статическая библиотека, динамически связанная библиотека или исполняемая программа) установите SaturateOnIntegerOverflow
свойство к false
.
В приложении MATLAB Coder™ установите значение Saturate on integer overflow No
.
Примечание
Не отключайте поддержку целочисленного переполнения, если вы не знаете, что ваш код не зависит от него. Если отключить поддержку и включить проверку во время выполнения, сгенерированный код создает ошибку для целочисленного переполнения. Если вы отключили поддержку целочисленного переполнения, а также отключили проверку во время выполнения, поведение для целочисленного переполнения не определено. Большинство компиляторов C переносятся при переполнении.
Чтобы проверить, зависит ли ваш код от поддержки целочисленного переполнения:
Отключите поддержку целочисленного переполнения.
Включите проверки, чтобы обнаружить целочисленное переполнение во время выполнения.
Для MEX включите проверку целостности. См. Раздел «Проверки во время выполнения системы управления»
Для автономного кода (статическая библиотека, динамически связанная библиотека или исполняемая программа) включите проверки во время выполнения. См. "Генерация автономного кода C/C + +", который обнаруживает и сообщает об ошибках во время выполнения ".
Запустите сгенерированный код по полной области значений входа значений. Если сгенерированный код обнаруживает целочисленное переполнение, это приводит к ошибке.
По умолчанию для автономного кода (статическая библиотека, динамически связанная библиотека или исполняемая программа) генератор кода производит код для обработки нефинитовых чисел (inf
и NaN
). Если вы знаете, что ваш код не зависит от поддержки нефинитных чисел, для улучшения эффективности сгенерированного кода можно отключить поддержку. Чтобы отключить нефинитную поддержку:
В объекте строения генерации кода установите SupportNonFinite
свойство к false
.
В приложении MATLAB Coder установите Support nonfinite numbers равным No
.
Если вы отключили нефинитную поддержку, проверьте, что ваш сгенерированный код ведет себя должным образом.