Создание скомпилированной функции кода C, включая инструментарий регистрации
buildInstrumentedMex переводит файл MATLAB ®fcn -options к функции MEX и обеспечивает возможность регистрации минимальных и максимальных значений всех именованных и промежуточных переменных. При необходимости можно включить инструментарий для гистограмм log2 всех именованных, промежуточных и выраженных значений. Общий синтаксис и опции fcn.mbuildInstrumentedMex и fiaccel одинаковы, за исключением buildIntstrumentedMex не имеет fi объектные ограничения и поддерживает '-coder' вариант.
buildInstrumentedMex переводит функции MATLAB fcn_1... fcn_n -options -coder через fcn_1 к функции MEX и обеспечивает возможность регистрации минимальных и максимальных значений всех именованных и промежуточных переменных. Для создания функции MEX для нескольких функций начального уровня требуется fcn_n'-coder' вариант.
Функции MATLAB, поставляемые вместе с программным обеспечением, не используются. Если функция верхнего уровня является такой функцией MATLAB, ничего не регистрируется. Вы также не можете использовать сценарии инструментов.
Результаты измерений накапливаются при каждом вызове функции MEX. Использовать clearInstrumentationResults для очистки предыдущих результатов в журнале.
Некоторые шаблоны кодирования пропускают значительный объем данных, но используют лишь небольшую часть этих данных. В таких случаях при использовании может наблюдаться снижение производительности buildInstrumentedMex. В следующем шаблоне: subfun использует только один элемент входного массива, A. Для нормального выполнения - количество времени на выполнение subfun один раз остается постоянным независимо от размера A. Функция topfun требования subfun
N время и, таким образом, общее время выполнения topfun пропорционально N. Однако при использовании инструментальных средств время выполнения subfun один раз становится пропорциональным N^2. Это изменение происходит потому, что минимальные и максимальные данные вычисляются по всему массиву. Когда A является большим, расчеты могут привести к значительному снижению производительности. Поэтому по возможности следует передавать только те данные, которые действительно необходимы функции.
function A = topfun(A)
N = numel(A);
for i=1:N
A(i) = subfun(A,i);
end
end
function b = subfun(A,i)
b = 0.5 * A(i);
end
function A = topfun(A)
N = numel(A);
for i=1:N
A(i) = subfun(A(i));
end
end
function b = subfun(a)
b = 0.5 * a;
end
clearInstrumentationResults | fiaccel | mex | NumericTypeScope | showInstrumentationResults | codegen (кодер MATLAB)