exponenta event banner

Оптимизация набора мемов

Чтобы оптимизировать сгенерированный код, который присваивает литеральную константу последовательным элементам массива, генератор кода пытается заменить код на memset звоните. A memset вызов может быть более эффективным, чем for-закольцовывание или несколько последовательных назначений элементов. В этой таблице приведены примеры сгенерированного кода C с и без 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 ® Coder™ установите пороговое значение Memcpy (байт).

Для назначения нуля с плавающей запятой включите или отключите memset оптимизация:

  • В командной строке задайте свойство объекта конфигурации кода InitFltsAndDblsToZero кому true или false. Значение по умолчанию: true.

  • В приложении MATLAB Coder установите параметр Use memset to initialize floats и удвоьте значение 0.0 to Yes или No. Значение по умолчанию: Yes.

Связанные темы