buildInstrumentedMex
ログ作成可能なインストルメンテーションを含んだコンパイル済み C コード関数の生成
説明
buildInstrumentedMex
は、MATLAB® ファイル fcn
-options
を MEX 関数に変換し、すべての名前付きの変数と中間変数の両方の最小値と最大値のログを作成するインストルメンテーションを有効にします。オプションで、名前付きの値、中間値および式の値すべての log2 ヒストグラムに対するインストルメンテーションを有効にできます。fcn
.mbuildInstrumentedMex
および fiaccel
の一般的な構文とオプションは同じですが、buildIntstrumentedMex
は fi
オブジェクトの制限がなく、'-coder'
オプションをサポートします。
メモ
関数 fiaccel
と同様に、関数 buildInstrumentedMex
は MEX 関数を生成します。C コードを生成するには、関数 codegen
(MATLAB Coder) を使用します。
例
入力引数
ヒント
ソフトウェアに付属の MATLAB 関数はインストルメント化できません。最上位の関数がそのような MATLAB 関数の場合、ログには何も含まれません。また、スクリプトもインストルメント化できません。
インストルメンテーションの結果は、インストルメント化した MEX 関数が呼び出されるたびに累積されます。
clearInstrumentationResults
を使用して、ログの前回の結果をクリアします。コーディング パターンによっては膨大なデータが渡されますが、使用されるデータはその一部です。そのような場合、
buildInstrumentedMex
の使用時にパフォーマンスの低下が確認される可能性もあります。次のパターンでは、subfun
は入力配列の 1 要素A
しか使用しません。通常の実行では、subfun
を 1 回実行する時間はA
のサイズにかかわらず一定です。つまり、関数topfun
がsubfun
をN
回呼び出すと、topfun
の合計実行時間はN
に比例します。ただし、インストルメント化されると、subfun
を 1 回実行する時間は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
バージョン履歴
R2011b で導入参考
fiaccel
| clearInstrumentationResults
| showInstrumentationResults
| NumericTypeScope
| codegen
(MATLAB Coder) | mex