2011-06-25 6 views
39

私はちょうどtraceview出力の様々な要素を取得していない、私はチュートリアルを見つけることができません。バーの幅が関数が取る時間に対応するAndroid Eclipse:Traceview、私はちょうどそれを取得しません

enter image description here

  1. :誰かが下の図を参照して以下に説明してくださいでした。高さは何に対応していますか?
  2. 包括的と排他的との具体的な違いは何ですか?私は包括的にすべての子供の機能の呼び出しを含むと仮定しましたか?
  3. これは当てはまりますか?(呼び出しあたりの呼び出し時間)=プログラムの実行時間の合計(非同期タスクはどうですか)
  4. メインスレッドでのデバッグのデバッグ時に非同期タスクは無視できますか?
  5. Excl%の百分率の合計が100%に等しいか?
  6. ギャップ(黒の中に白い部分)があるとどうなりますか?それは、他のアンドロイドプロセスが実行されているとき、またはあなた自身の非同期タスクがあるときです(それは、あるもののギャップが他のものの中に埋め込まれているように見えます。 )?
+4

[Traceview War Story](http://android-developers.blogspot.com/2010/10/traceview-war-story.html)を読んでください。包括的および排他的な列に関するご質問にお答えします。 @エリックの答えは残りを処理する。 – keno

答えて

10

私はすべてのご質問にお答えカントが、私が言うことができます...

#4のための

いいえ、あなたは自分自身でそう非同期タスクをシングルコアプロセッサを実行している(あるいは少なくとも一つをエミュレート)していますスレッドは処理時間を得るためにメインスレッドを中断しなければならない。別のスレッドが実行されるたびに、メインスレッドでは「減速」されるので、そのスレッドを監視する必要があります。

for#6、主スレッドの実行トレースに表示されるギャップは、asynctaskがプロセッサ時間を取得している時間と正確に相関します。ここでも、シングルコアは、一度に1つのスレッドしか実行できません。この時間スライスでは、他のプロセスにプロセッサ時間が全くないように見えますが、それらのスレッドはまだバックグラウンドでスリープしていました。これはエミュレータの可能性が高いため、一般的です。ライブの電話でもっと多くの情報が表示されます:)

スレッドの実行における各スパイクの高さがプロセッサの使用率(%)であることも確信しています。たとえば、メインスレッドの「黒い」領域はシステムアイドルです。編集:さて、私は確かに今は確かです。これがまさにこれです。あなたのメインスレッドでは、ソリッドピンクのその領域は、100%のプロセッサ使用率を保証します。

+0

ありがとうエリック、実際にはこれは本当の電話にあった – tjb

+0

+1答え、エリックありがとう。あなたは#1の答えのどこかに決定的なリファレンスを持っていますか?それも私の感情ですが、私はどこにでも参照を見つけることができません。 –

1

traceviewグラフに関する他の重要なノウハウ(mentioned here):traceviewによって表示される時刻は実際の壁時計時刻ではなく、CPU時間を使用します。

たとえば、FPSを減らすことによって、トレースビューグラフの形状は、アイドルデューティサイクルを含まないため変更できません。したがって、パフォーマンスを測定する際には、一定時間(10秒、60秒など)アプリを実行し、100%の呼び出しに要した時間が以前よりも短くなっているかどうかを確認することもおすすめします。

17

(私はこれを@ ronの答えにコメントとして追加していますが、私の評判は依然として高すぎるためコメントできません))。

2011年7月以降、Jeff Brownのコード変更によって、wallview時間とcpu使用時間を得るために、実際にtraceviewとVMDebugを取得できます。私は、必要なアクセス許可がルートデバイスを必要とするのではないかと心配しています。これにより、上記のtjbによるポストとは少し異なるトレースビューウィンドウが表示されます。

http://git.insignal.co.kr/?p=mirror/aosp/platform/dalvik.git;a=commitdiff;h=9f640af99bebc6e96f6e1e9903557e2c8f567483

TLDR。 adb shell setprop dalvik.vm.extra-opts -Xprofile:dualclockを入力し、端末を再起動します。私は技術的に質問に答える助けになってるので、

HRM、:棒の高さの

  1. 私の理解では、それが親機能に関連するということです。 a()がb()を呼び出したとします。次に、a()は実行中で、b()も実行中です。 b()が実行されている間、traceviewはbの色を表示します。 aが実行されているとき(すなわち、excl時間)にはaの色が描画され、aのバーはbのバーより少し上に描画されます。少なくとも、これは間違いなくズームインしたときの動作です。背の高いバーに対応する機能をクリックすると、その近くの小さなバーの下に角括弧を入れて、親がそれをすべて担当していることを示します。親は常により高いバーとして表示されます。

  2. はい:)。インクルーシブは、関数の実行に費やされた時間、またはその関数によって呼び出されたものです。 Exclusiveは、「呼び出された関数を排除したもの」であり、関数の適切な機能(または機能の切り替え)に費やされた時間です。

  3. あなたが暗示していると思うトップレベルのみ。それでも@ ronの答えを見てください - これは壁時計の時間ではなく、CPU使用時間です。 AsyncTasksはメインスレッドで実行されるため、トップレベルの内訳のどこかに含まれます。なぜなら/ラウンド上下ラウンドの(すなわち1.87パーセントは1.9%と表示されます)、エリック・

  4. ないで答えハンドラ

  5. に同じ。しかし、「独占」の項目の合計は、あなたの質問エリック

によって答え(3)

  • のために計算された数と同じである右上隅に示す総時間まで追加する必要があります

  • 0

    GoogleはAndroidのパフォーマンスでUdacityに関するすばらしいコースをリリースしました。 this module that provides a walkthrough of Traceviewがあります。ビデオモジュールの下のコースガイドには、Traceviewの使い方を詳しく解説しています。これらを見て、あなたの質問のほとんどに答えます。私は非常にあなたがそれをチェックすることをお勧めします!

    関連する問題