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