为了优化为连续数组元素分配文字常量的生成代码,代码生成器尝试用memset
调用。一个memset
打电话比打电话更有效率为
循环或多个连续的元素赋值。这个表显示了带有和不带有C代码生成的示例memset
.
代码生成与memset优化 | 没有memset优化的代码生成 |
---|---|
memset(&Y[0], 125, 100U * sizeof(signed char)); |
For (i = 0;我< 100;i++) {Y[i] = 125; |
memset(&Z[0], 0, 1000U * sizeof(double)); |
Z [0] = 0.0;Z [1] = 0.0;Z [2] = 0.0;...Z [999] = 0.0; |
代码生成器可以使用memset
整数常数或浮点零的赋值优化。的使用memset
取决于:
要赋值的大小。大小必须满足C/ c++的要求memset
调用。
要分配的字节数。要赋值的字节数是C/ c++数据类型所需的数组元素数乘以字节数。
如果在编译时已知要分配的元素的数量,那么代码生成器将生成memset
仅当字节数大于或等于阈值时调用。
如果在编译时不知道元素的数量,那么代码生成器将生成memset
调用时不考虑阈值。
的memset
优化阈值与memcpy
优化阈值。默认阈值为64字节。修改阈值。
在命令行中,设置代码配置对象属性MemcpyThreshold
.
在MATLAB®编码器™应用程序,Memcpy阈值(字节).
对于浮点数0的赋值,要启用或禁用memset
优化:
在命令行中,设置代码配置对象属性InitFltsAndDblsToZero
来真正的
或假
.默认值为真正的
.
在MATLAB编码器应用程序,使用memset将浮点数和双精度数初始化为0.0来是的
或没有
.默认值为是的
.