主要内容

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是的没有.默认值为是的

相关的话题