Сгенерируйте скомпилированную функцию кода С включая логгирование инструментирования
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
NumericTypeScope
| clearInstrumentationResults
| codegen
| fiaccel
| mex
| showInstrumentationResults