memset优化
为优化将文字常量赋值给连续数组元素的生成代码,代码生成器会尝试将代码替换为memset
调用。一个memset
呼叫可以比呼叫更有效为
-循环或多个连续的元素赋值。这个表显示了生成的C代码的示例memset
.
使用memset优化生成的代码 | 没有memset优化的代码生成 |
---|---|
memset(&Y[0], 125, 100U * sizeof(signed char)); |
For (i = 0;I < 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阈值(字节).
对于浮点零的赋值,启用或禁用memset
优化:
在命令行上,设置代码配置对象属性
InitFltsAndDblsToZero
来真正的
或假
.默认值为真正的
.在MATLAB编码器应用程序,使用memset初始化浮点数和双精度值为0.0来
是的
或没有
.默认值为是的
.