主要内容

memcpy优化

若要优化复制连续数组元素的生成代码,代码生成器会尝试将代码替换为memcpy调用。一个memcpy呼叫可以比呼叫更有效-循环或多个连续的元素赋值。属性生成的C代码示例memcpy优化。

使用memcpy优化生成的代码 没有memcpy优化的代码生成
memcpy(&C[0], &A[0], 10000U * sizeof(double));
For (i0 = 0;I0 < 10000;i0++) {C[i0] = A[i0];
memcpy(&Z[0], &X[0],1000U * sizeof(double));
Z[0] = x [0];Z[1] = x [1];Z[2] = x [2];...Z[999] = x [999];

控件的启用或禁用memcpy优化:

  • 在命令行上,设置代码配置对象属性EnableMemcpy真正的.默认值为真正的

  • MATLAB®编码器™应用程序,使用memcpy进行向量赋值是的没有.默认值为是的

memcpy优化是启用的,使用memcpy取决于要复制的字节数。要复制的字节数是数组元素的数量乘以C/ c++数据类型所需的字节数。

  • 如果要复制的元素数量在编译时已知,则代码生成器将生成一个memcpy仅当字节数大于或等于时调用memcpy阈值。

  • 如果在编译时不知道元素的数量,则代码生成器将生成一个memcpy调用时不考虑阈值。

默认的memcpy阈值为64字节。修改阈值。

  • 在命令行上,设置代码配置对象属性MemcpyThreshold

  • MATLAB编码器应用程序,Memcpy阈值(字节)

memset优化还使用memcpy阈值。

在某些情况下,代码生成器可以生成memcpy打电话不考虑EnableMemcpyMemcpyThreshold参数,或应用程序中的等效设置。

相关的话题