Чтобы оптимизировать сгенерированный код, который присваивает литеральную константу последовательным элементам массива, генератор кода пытается заменить код на 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.