В этом примере показано, как задать динамический порог выделения памяти для массивов переменного размера. Динамическое выделение памяти оптимизирует требования к памяти для массивов переменного размера, но вызывает более медленное выполнение сгенерированного кода. Вместо отключения динамического выделения памяти для всех массивов переменного размера можно отключить динамическое выделение памяти для массивов меньше определенного размера.
Задайте этот порог, когда хотите:
Отключите динамическое выделение памяти для небольших массивов. Для небольших массивов статическое выделение памяти может ускорить сгенерированный код. Статическое выделение памяти может привести к неиспользованию пространства в памяти. Однако можно решить, что неиспользованное пространство памяти не является существенным фактором для небольших массивов.
Включите динамическое выделение памяти для больших массивов. Для больших массивов, когда вы используете динамическое выделение памяти, можно значительно уменьшить требования к памяти.
Чтобы открыть диалоговое окно 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, такие как размещение переменных в регистрах.