主要内容

memset优化

为了优化为连续数组元素分配文字常量的生成代码,代码生成器尝试用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是的没有.默认值为是的

相关的话题