<

CPU プロファイラー ビューの使用

CPU プロファイラー ビューを使用すると、CPU の記録とプロファイリングを行うことができます。 Dart または Flutter アプリケーションからのセッション。 プロファイラーはパフォーマンスの問題の解決に役立ちます またはアプリの CPU アクティビティを一般的に理解します。 Dart VM は CPU サンプルを収集します (ある時点での CPU 呼び出しスタックのスナップショット) そして、視覚化のためにデータを DevTools に送信します。 多数の CPU サンプルを集約することで、 プロファイラーは、CPU がどこにあるかを理解するのに役立ちます。 ほとんどの時間を費やします。

CPUプロファイラ

をクリックして CPU プロファイルの記録を開始します。記録。 録音が完了したら、 をクリックしますストップ。この時点で、 CPU プロファイリング データが VM から取得され、表示されます プロファイラ ビュー (コール ツリー、ボトムアップ、メソッド テーブル、 およびフレームチャート)。

利用可能なすべての CPU サンプルを手動でロードせずにロードするには 録音と停止は、クリックできます。すべての CPU サンプルをロードする、 VM が記録したすべての CPU サンプルを取得し、 リングバッファに保存され、それらを表示します プロファイラー ビューの CPU サンプル。

一気飲み

この表はボトムアップの表現を提供します。 CPU プロファイルの。これは、各トップレベルのメソッドが、 またはルート、ボトムアップテーブルには実際には 1 つ以上の CPU サンプルの呼び出しスタック内の最上位メソッド。 言い換えれば、トップレベルの各メソッドはボトムアップで table はトップダウンテーブルのリーフノードです (コールツリー)。 この表では、メソッドを展開してそのメソッドを表示できます。発信者

このビューは、高価な製品を特定するのに役立ちます。メソッドCPU プロファイル内。このテーブルのルートノードの場合 高いです自己時間、つまり多くの CPU サンプルが必要になる このプロファイルでは、コール スタックの先頭にあるメソッドで終了しました。

Screenshot of the Bottom up viewを参照してください。ガイドライン方法については、以下のセクションを参照してください この画像に見られる青と緑の縦線を有効にします。

ツールチップは、各列の値を理解するのに役立ちます。

合計時間

ボトムアップ ツリーのトップレベル メソッドの場合 (少なくとも 1 つのフレームの先頭にあったフレームをスタックします。 CPU サンプル)、これはメソッドの実行に費やした時間です 独自のコードと、それを実行するメソッドのコード それは呼んだ。

セルフタイム

ボトムアップ ツリーのトップレベル メソッドの場合 (少なくとも 1 つの CPU の先頭にあったスタック フレーム サンプル)、これはメソッドの実行のみに費やした時間です。 独自のコード。

ボトムアップ ツリーの子メソッド (呼び出し元) の場合、 これはトップレベルのメソッド (呼び出し先) の自己時間です。 子メソッド (呼び出し元) を通じて呼び出されたとき。

テーブル要素(セルフタイム)Screenshot of a bottom up table

コールツリー

この表は、CPU プロファイルをトップダウンで表したものです。 これは、呼び出しツリー内の各最上位メソッドがルートであることを意味します。 1 つ以上の CPU サンプルの。この表では、 メソッドを展開してそのメソッドを表示できます。呼び出し先

このビューは、高価な製品を特定するのに役立ちます。パスCPU プロファイル内。 このテーブルのルート ノードのレベルが高い場合、合計時間、 これは、このプロファイルの多くの CPU サンプルが開始されたことを意味します そのメソッドはコールスタックの一番下にあります。

Screenshot of a call tree tableを参照してください。ガイドライン方法については、以下のセクションを参照してください この画像に見られる青と緑の縦線を有効にします。

ツールチップは、各列の値を理解するのに役立ちます。

合計時間
メソッドが独自のコードの実行に費やした時間と 呼び出したメソッドのコード。
セルフタイム
メソッドが独自のコードのみの実行に費やした時間。

メソッドテーブル

メソッド テーブルには、各メソッドの CPU 統計が表示されます。 CPU プロファイルに含まれています。左側の表では、 利用可能なすべてのメソッドがそのメソッドとともにリストされます合計自己時間。

合計time はメソッドにかかった時間を合計したものですどこでもコールスタック上、つまり、 メソッドが独自のコードの実行に費やした時間と、 呼び出されたメソッドのコード。

自己time はメソッドにかかった時間を合計したものです 呼び出しスタックの最上部、言い換えれば、 メソッドが独自のコードのみの実行に費やした時間。

Screenshot of a call tree table

左の表から方法を選択すると、 そのメソッドの呼び出しグラフ。コールグラフに表示されるのは、 メソッドの呼び出し元と呼び出し先、およびそれぞれの 発信者/着信者の割合。

フレームチャート

フレーム チャート ビューは、次のことをグラフィカルに表現したものです。 のコールツリー。これはトップダウンビューです CPU プロファイルの、このグラフでは、 最上位のメソッドはその下のメソッドを呼び出します。 各フレーム チャート要素の幅は、 メソッドがコールスタックに費やした時間。

コール ツリーと同様に、このビューは、次のことを識別するのに役立ちます。 CPU プロファイル内の高価なパス。

Screenshot of a flame chart

ヘルプ メニュー。?アイコン 検索バーの横に、次の方法に関する情報が表示されます。 チャート内や色分けされた凡例内を移動したりズームしたりできます。Screenshot of flame chart help

CPUのサンプリングレート

DevTools は、VM が CPU サンプルを収集するデフォルトのレートを設定します。 1 サンプル / 250 μs (マイクロ秒)。これはデフォルトで選択されています CPU プロファイラー ページでは「CPU サンプリング レート: 中」として表示されます。 このレートは、上部のセレクターを使用して変更できます。 ページの。

Screenshot of cpu sampling rate menu

低い中くらい、 と高いサンプリングレートは それぞれ1,000 Hz、4,000 Hz、20,000 Hz。 トレードオフを知ることが重要です この設定を変更します。

で記録されたプロファイルより高いサンプリングレート より多くのサンプルを使用して、よりきめの細かい CPU プロファイルが生成されます。 これは、VM 以降のアプリのパフォーマンスに影響を与える可能性があります。 サンプル収集のために中断されることが多くなりました。 これにより、VM の CPU サンプル バッファーがより早くオーバーフローします。 VM には、CPU サンプル情報を保存できるスペースが限られています。 サンプリング レートが高くなると、スペースがいっぱいになって開始されます。 サンプリングが低い場合よりも早くオーバーフローする レートが使用されました。 これは、CPU サンプルにアクセスできない可能性があることを意味しますレ 記録されたプロファイルの先頭から、状況に応じて 録音中にバッファがオーバーフローするかどうか。

低いサンプリングレートで記録されたプロファイル より少ないサンプルでより粗い CPU プロファイルが生成されます。 これによりアプリのパフォーマンスへの影響は少なくなりますが、 しかし、あなたがアクセスできる情報は少ないかもしれません。 プロファイルの時間中に CPU が実行していました。 VM のサンプル バッファーがいっぱいになるのも遅くなるため、次のことがわかります。 アプリの実行時間を長くするための CPU サンプル。 つまり、CPU を表示できる可能性が高くなります。 記録されたプロファイルの先頭からのサンプル。

フィルタリング

CPU プロファイルを表示するときに、次の条件でデータをフィルタリングできます。 ライブラリ、メソッド名、またはUserTag

Screenshot of filter by tag menu

ガイドライン

コールツリーまたはボトムアップビューを見ると、 時には木が非常に深くなることもあります。 深いツリーで親子関係を表示しやすくするために、 を有効にする表示ガイドラインオプション。 これにより、ツリー内の親と子の間に垂直方向のガイドラインが追加されます。

Screenshot of display options

その他のリソース

DevTools を使用して分析する方法を学ぶには 計算負荷の高いマンデルブロ アプリの CPU 使用率、 ガイド付きをチェックしてくださいCPU プロファイラー チュートリアルを見る。 また、アプリの実行時に CPU 使用率を分析する方法も学習します。 並列計算に分離を使用します。