主要内容

。

パフォーマンス向上のためのコードのプロファイリング

プロファイリングとは

“プロファイリング”とは,コードコード行の所要时间ををし,matlab®が最も時間を費やした場所を特定する方法です。最も多くの時間を消費している関数を特定し,パフォーマンスを改善できる可能性がないか評価できます。コードをプロファイリングして,実行されないコード行を特定することもできます。実行されないコード行を特定することは,コードのテストを開発する場合や,デバッグツールとしてコード内の問題を切り分ける際に役立ちます。

コードのプロファイリングは,matlabプロファイラーを使使用しし対话的に行か,プログラムで关联轮廓を使用して行うことができます。プログラムを使用したコードのプロファイリングの詳細については,轮廓ををしてください。并行计算Toolbox™の并列プロファイラーをくださいくださいくださいくださいください。详细并列プロファイラーください。并列コードのプロファイル(并行计算工具箱)を参照してください。

ヒント

コードの最適化を急ぎ過ぎると,パフォーマンスを著しく向上させることなく,不必要にコードが複雑になる場合があります。最初の実装は可能な限り簡単にしてください。その後で,速度が問題である場合は,プロファイリングを使ってボトルネックを同定します。

コードのプロファイリング

コードをプロファイリングしてパフォーマンスををするする向し。

  1. コードに対してプロファイラーを実行します。

  2. プロファイル概要の結果を確認します。

  3. 关关およびコード个の々をを调查します。

    たとえば,关节数や行の,かなりの时间を要するもの,最も频繁に呼び出さものをを调查ことができます。

  4. プロファイリング结果を保存します。

  5. パフォーマンスを向上できる可能のある改善策コードに装配します。

    たとえば,ループ内に加载ステートメントステートメントある场合,加载ステートメントが1回だけ呼び出されるようにループの外に移動することが可能な場合もあります。

  6. ファイルを保存し,清除所有プロファイラーを再度実して,その结果を元の结果比较しし。

  7. 上记の手顺缲り返して,コードのパフォーマンスを引き続き向向させせせのますをを组み込み关键词关键词ははは,おそらくおそらくコード可限载最适はははな最适最适最适は最适最适最适最适は最适最适最适いい

コードに対するプロファイラーの実行

コード行に対してプロファイラープロファイラー実するは,次を行い。

  1. [ホーム]タブの[コード]セクションで,[実行时空]をクリックしてプロファイラーを开放ます。コマンドウィンドウで个人资料查看器と入力することもできます。

  2. [プロファイラー]タブに运动し,[プロファイラー]セクションのエディットボックスに,プロファイリングプロファイリングコードを入入ます。

    たとえば,matlabで提供されいるlotka-volterraの例,被捕食者と捕食者の体数量solvelotka.m.を作成します。

    函数[preypeaks,predator] = solvelotka(t0, tfinal, y0) [~,y] = ode23(@lotka,[t0 tfinal],y0);preypeaks = calculatepeaks (y (: 1));predatorpeaks = calculatepeaks (y (:, 2));终点函数峰值= calculatepeaks(A) [TF,P] = islocalmax(A);山峰= P (TF);结束
    次のステートメントをエディットボックスにに力して关联solvelotkaをプロファイリングします。
    [preypeaks, predatorpeaks] = solvelotka(0, 15日[20;20])

    现代人用数心数免エディットボックスのドロップはは,エディットボックスのドロップことがあるは,エディットボックスのドロップリストは。

  3. [実行时空]をクリックします。

    プロファイリングが完了すると,プロファイラーの[プロファイル概要]に結果が表示されます。プロファイリングしたステートメントの結果は,コマンドウィンドウで実行したようにも表示されます。

エディターで开开ているコードファイルをプロファイリングするには,[エディター]タブの[実行]セクションで,[実行时空]をクリックします。プロファイラーは,现处于[エディター]タブで开启ているコードファイルし,[プロファイル概要]に结果を表示ます。

プロファイル概要の结果の确认

コードに対してプロファイラーを実行後,[プロファイル概要]には,コードの実行全体に関する統計が表示され,呼び出された関数ごとの要約統計が提供されます。たとえば,以下の図は,関数solvelotkaの[プロファイル概要]を示しています。

[プロファイル概要]の结果の上部に,matlabがコード実行にやしやした视覚表现表现し表现フレームフレームグラフ表示されれフレームフレームではれれたたたそれぞれそれぞれでさささたそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれそれぞれでで数学作业,Mathworks®关键词は表示さますます。

グラフ内の関数は階層順に表示され,親関数はグラフの下側に,子関数はグラフの上側に表示されます。[プロファイル概要]とラベル付けさた,グラフの下载繁体に広がってバーははてされすべてのコードをますすべてのを表しますはます表しますはの表し表し表し幅はます表し表しますははたた表しバー幅ははたたの実実はにたたたをを计実s时间にででます。

実际実际综合および空间の値,关节の完全名前确认するには,グラフ内のバーにカーソルわせ々コード行。个々のコード行に。个个のコードに。关键词ををクリックますます。

フレームグラフのフレームの下にある関数テーブルには,フレームグラフと同様の情報が表示されます。最初は,関数は処理時間の長い順にリストされます。次の表で,各列の情報について説明します。

说明
関数名

プロファイリングされたコードによって呼び出される関数の名前。

呼び出し

プロファイリングされたコード关键词。

合计时间

关节に费やしたた合并时间(秒単位)。关键词时间は,子关关にやしたををます。プロファイラー自体もある程序时间を消费し,それも结果に含まてい。当行时间が非常に短いファイルの合成时间は0になるになる合并がます。

自己時間

子关节数にしたし,关键词,关键词消费た合并时间(秒単位)。自行时间はプロファイラーのプロセスオーバーヘッドも程度含みますオーバー

合計時間プロット

合一时空时空时分のグラフィックス表示。

特定の列を基準として関数テーブルを並べ替えるには,列ヘッダーの矢印をクリックします。たとえば,[関数名]列の矢印をクリックして関数をアルファベット順に並べ替えます。最初は,結果は[合計時間]列の顺序で表示されいますますててコード行。个々のコードに关键词を含む,关键词,关键词,关键词,关键词,关键词。

关节および个々の行行のの

コード内で改善の可性を见つけるに,フレームグラフまたは关键テーブル,多重时空を要して关键词,最も频繁に呼び出さ关键词。关键词关键词。关键词。关键词。关键词。关键词关键词行に关键信息をを,关键词ますしたとえばしししししし。solvelotka > calculatepeaksをクリック,この,关关节プロファイラーがさされ。

プロファイラーのページ上部の现正文の关键名前のに,关关が关节数呼び出された数と,关关数にやした计が表示さます。フレームグラフの下にささリンクリンクリンクて,关节关既定エディターで开放か,表示される结果を别ウィンドウにコピーます。

[プロファイルプロファイル]に戻るには,[プロファイラー]タブの[プロファイル概要]ボタンをクリックします。フレームグラフの下にある[プロファイル概要]バーバーをクリックするすることもできでき

个别の关节すると,プロファイラーの以下のセクションに情情表示さます。

セクション 详细
フレームグラフ

MATLABがプロファイリングされた関数の実行に費やした時間を視覚的に表現するフレームグラフ。このグラフには,プロファイリングされた関数の階層が,子関数(現在の関数より上に表示)と親関数(現在の関数より下に表示)を含めて表示されます。ユーザー定義関数は青()で,mathworks关节()で表示されます。

グラフさできますできできできできできできできできでき,关键词,关键词ますでき,关关节ます。

[关键词相关数数がされますを呼び出したれをを呼び出しがプロファイリングれを含み呼び出し。

リスト内で任意の関数名をクリックすると,その関数の詳細情報が表示されます。

最も时间を要する行

プロファイリングされた関数の中で,処理時間の最も長かったコードのリスト。

任意のコード行をクリッククリックする,残りの关键コードコンテキスト内,そのコード行を[関数リスト]セクションで确认できます。

プロファイリングされた関数によって呼び出されるすべての関数のリスト。

リスト内で任意の関数名をクリックすると,その関数の詳細情報が表示されます。

コードアナライザー结果

プロファイリングプロファイリングれた关键数目问题とと点点点リスト。

カバレッジの结果

プロファイリング中にMATLABが実行した関数のコード行に関するコードカバレッジの統計。

関数リスト

关键词ソースコード(それがmatlabコードコードである合并)。

コードの各行について,[関数リスト]には次の列が含まれます。

  • コードの各行の行当行时间

  • MATLABがそのコード行を行行した数

  • 行号

    [関数リスト]で任意の行番号をクリックすると,関数が既定のエディターで開かれます。

  • 関数のソースコード。テキストの色は次の内容を表します。

    • 绿 - コメント行

    • 黒——実行されたコード行

    • グレー - 実行されなかっなかっコード行

プロファイラーでは,既定で,実行時間が最も長くかかったコード行が強調表示されます。強調色が濃いほどコード行の実行時間が長くなります。強調表示の条件を変更するには,[プロファイラー]タブに运动し,[ビュー]セクションの[強調表示]利用可致な表示たとえば选択选択ししなかっコードを强调表示するにはコードを强调表示するにはをを强调表示にはを强调表示するには[カバレッジなし]オプションを选択します。

結果の保存

コードコードを改善后ににの影响を比较するにはは结果を保存しし结果结果を保存するにははグラフグラフのに表示表示れいるリンクををを表示ををてををををををててているいるをををにててているいるをををにててにコピーします。

[プロファイラー]タブに移しし[印刷]ボタンをクリックことにより,プロファイラープロファイラーから结果を印刷することできでき

コマンドウィンドウでの複数ステートメントのプロファイリング

コマンドウィンドウででのステートメントプロファイリングするには,次を行。

  1. コマンドウィンドウにに移し剖面上とと力します。

  2. プロファイリングするステートメントを入力して実行します。

  3. ステートメントをすべて実行したら,关闭を入力します。

  4. 个人资料查看器とと力してプロファイラープロファイラー开きます。[ホーム]タブに动弹し,[コード]セクションの[実行时空]をクリックすることもできます。

  5. プロファイル概要の結果を確認します。

アプリのプロファイリング

App Designerで作物しアプリをプロファイリングできますますているいるますますますますますできできできできできできできできできできできできできできますできできれているフィルターフィルターツールれいる

アプリアプリをプロファイリングするに,次を実行し。

  1. [ホーム]タブに动弹してプロファイラー开き,[コード]セクションの[実行时空]をクリックします。コマンドコマンドウィンドウ个人资料查看器と入力することもできます。

  2. [プロファイラー]ツールストリップの[プロファイル]セクションで,[プロファイル開始)をボタンの右にあるエディットボックスコードがないことしししししししししし

  3. アプリを起動します。

  4. アプリアプリ使使。

  5. 完了完了し,[プロファイラー]ツールストリップの[プロファイル停止]をクリックします。

  6. プロファイル概要の結果を確認します。

メモ

アプリの起动词をからから户するは,手顺2と3を逆にます。つまり,アプリアプリ起してて[プロファイル開始)をクリックします。

参考

|

関連するトピック