Этот пример показывает, как задать порог динамического выделения памяти для массивов переменного размера. Динамическое выделение памяти оптимизирует требования устройства хранения данных для массивов переменного размера, но вызывает более медленное выполнение сгенерированного кода. Вместо того, чтобы отключить динамическое выделение памяти для всех массивов переменного размера, можно отключить динамическое выделение памяти для массивов меньше, чем определенный размер.
Задайте этот порог когда это необходимо к:
Отключите динамическое выделение памяти для меньших массивов. Для меньших массивов выделение статического ЗУ может ускорить сгенерированный код. Выделение статического ЗУ может привести к неиспользованному пространству памяти. Однако можно решить, что неиспользованное пространство памяти не является значительным фактором для меньших массивов.
Включите динамическое выделение памяти для больших массивов. Для больших массивов, когда вы используете динамическое выделение памяти, можно значительно уменьшать требования устройства хранения данных.
Чтобы открыть диалоговое окно Generate, на странице Generate Code, кликают по стрелке Generate.
Нажмите More Settings.
На вкладке Memory установите флажок Enable variable-sizing.
Установите Dynamic memory allocation на For arrays with max size at or above threshold
.
Установите Dynamic memory allocation threshold на значение, которое вы хотите.
Значение Dynamic memory allocation threshold измеряется в байтах. На основе информации от настроек целевого компьютера программное обеспечение оценивает размер массива, который может разместить определенное значение DynamicMemoryAllocationThreshold
. Эта оценка исключает возможную оптимизацию компилятора C, такую как помещение переменных в регистрах.
Создайте объект настройки для генерации кода. Используйте coder.config
с аргументами 'lib'
, 'dll'
или 'exe'
(в зависимости от ваших требований). Например:
cfg = coder.config('lib');
Установите DynamicMemoryAllocation
на 'Threshold'
.
cfg.DynamicMemoryAllocation='Threshold';
Установите свойство, DynamicMemoryAllocationThreshold
, к значению, которое вы хотите.
cfg.DynamicMemoryAllocationThreshold = 40000;
Значение, сохраненное в DynamicMemoryAllocationThreshold
, измеряется в байтах. На основе информации от настроек целевого компьютера программное обеспечение оценивает размер массива, который может разместить определенное значение DynamicMemoryAllocationThreshold
. Эта оценка исключает возможную оптимизацию компилятора C, такую как помещение переменных в регистрах.