Main Content

设置动态内存分配阈值

此示例说明如何为可变大小数组指定动态内存分配阈值。动态内存分配优化可变大小数组的存储要求,但会导致生成代码的执行速度变慢。您可以对小于特定大小的数组禁用动态内存分配,而不是对所有可变大小数组禁用动态内存分配。

当您要执行以下操作时,请指定此阈值:

  • 对较小的数组禁用动态内存分配。对于较小的数组,静态内存分配可以加快所生成代码的执行速度。静态内存分配会导致未使用的存储空间。但是,对于较小的数组,未使用的存储空间可能不是重要考虑因素,具体由您决定。

  • 对较大的数组启用动态内存分配。对于较大的数组,使用动态内存分配可以显著降低存储要求。

使用 MATLAB Coder 设置动态内存分配阈值

  1. 要打开生成对话框,请在生成代码页上点击生成箭头

  2. 点击更多设置

  3. 内存选项卡上,选择启用动态内存分配

  4. 动态内存分配阈值设置为所需的值。

    动态内存分配阈值值以字节为单位。根据来自目标硬件设置的信息,软件估计 DynamicMemoryAllocationThreshold 的某个值可以容纳的数组大小。此估计未考虑可能的 C 编译器优化,如将变量放入寄存器中。

在命令行设置动态内存分配阈值

  1. 创建用于代码生成的配置对象。使用具有参量 'lib''dll''exe'coder.config(具体取决于您的需求)。例如:

    cfg = coder.config('lib');
  2. EnableDynamicMemoryAllocation 设置为 true

    cfg.EnableDynamicMemoryAllocation=true;
  3. 将属性 DynamicMemoryAllocationThreshold 设置为所需的值。

    cfg.DynamicMemoryAllocationThreshold = 40000;

    存储在 DynamicMemoryAllocationThreshold 中的值以字节为单位。根据来自目标硬件设置的信息,软件估计 DynamicMemoryAllocationThreshold 的某个值可以容纳的数组大小。此估计未考虑可能的 C 编译器优化,如将变量放入寄存器中。

相关示例

详细信息