为了更快地执行生成的代码,最小化数组的动态(或运行时)内存分配。
MATLAB®编码器™在生成的代码中没有为未绑定数组提供大小。相反,这些数组是通过指针间接引用的。对于这样的数组,不能在编译生成的代码期间分配内存。根据数组的存储需求,在运行时根据需要分配和释放内存。这种运行时分配和释放内存会导致生成的代码执行速度变慢。
当代码生成器无法找到可变大小数组的上界时,就会发生动态内存分配。当使用非编译时常量的变量指定数组大小时,软件无法找到上限。此类变量的一个例子是输入变量(或由输入变量计算的变量)。
在MATLAB代码中可以导致动态内存分配的实例有:
数组初始化:使用一个变量指定数组大小,该变量的值只有在运行时才知道。
数组初始化后:
将数组声明为可变大小数组coder.varsize
没有明确的上界。声明之后,通过循环内的连接扩展数组。循环运行的次数只有在运行时才知道。
你使用重塑
函数的数组。属性的至少一个大小参数重塑
函数仅在运行时已知。
如果知道数组的最大大小,就可以避免动态内存分配。然后可以为数组提供一个上限,并防止在生成的代码中进行动态内存分配。有关更多信息,请参见最小化动态内存分配。