设置动态内存分配阈值
此示例说明如何为可变大小数组指定动态内存分配阈值。动态内存分配优化可变大小数组的存储要求,但会导致生成代码的执行速度变慢。您可以对小于特定大小的数组禁用动态内存分配,而不是对所有可变大小数组禁用动态内存分配。
当您要执行以下操作时,请指定此阈值:
对较小的数组禁用动态内存分配。对于较小的数组,静态内存分配可以加快所生成代码的执行速度。静态内存分配会导致未使用的存储空间。但是,对于较小的数组,未使用的存储空间可能不是重要考虑因素,具体由您决定。
对较大的数组启用动态内存分配。对于较大的数组,使用动态内存分配可以显著降低存储要求。
使用 MATLAB Coder 设置动态内存分配阈值
要打开生成对话框,请在生成代码页上点击生成箭头
。
点击更多设置。
在内存选项卡上,选择启用动态内存分配。
将动态内存分配阈值设置为所需的值。
动态内存分配阈值值以字节为单位。根据来自目标硬件设置的信息,软件估计
DynamicMemoryAllocationThreshold
的某个值可以容纳的数组大小。此估计未考虑可能的 C 编译器优化,如将变量放入寄存器中。
在命令行设置动态内存分配阈值
创建用于代码生成的配置对象。使用具有参量
'lib'
、'dll'
或'exe'
的coder.config
(具体取决于您的需求)。例如:cfg = coder.config('lib');
将
EnableDynamicMemoryAllocation
设置为true
。cfg.EnableDynamicMemoryAllocation=true;
将属性
DynamicMemoryAllocationThreshold
设置为所需的值。cfg.DynamicMemoryAllocationThreshold = 40000;
存储在
DynamicMemoryAllocationThreshold
中的值以字节为单位。根据来自目标硬件设置的信息,软件估计DynamicMemoryAllocationThreshold
的某个值可以容纳的数组大小。此估计未考虑可能的 C 编译器优化,如将变量放入寄存器中。