Сгенерируйте скомпилированную функцию кода С, включая каротажное инструментирование
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 CODER)