Android性能最適化のTraceView分析

2564 ワード

前言:先日、私たちのプロジェクトが2級ページに入るスピードを最適化する任務を受けて、やっと突然pm定の各種業務の需要に忙しいことを発見して、長い間性能の方面の向上の仕事を専門にしていませんでした.カートンの原因をTraceViewで分析することを自然に選んだので、今回の最適化が終わったときにクラシックで使いやすいTraceViewに敬意を表してこの簡単な大衆的な文章を書いたと思います.
まず必要なシロ科普をあげて、TraceViewは何ですか?
TraceViewはAndroidプラットフォーム特有のデータ収集と分析ツールで、主にホットスポット分析に用いられ、最も最適化が必要な点を見つけます.TraceViewはコードレベルからパフォーマンスの問題を分析し、各方法について分析します.例えば、私たちのアプリケーションにカートンが現れたことを発見したとき、私たちはカードが現れたとき、すぐに方法の呼び出しに時間のかかる操作があるかどうかを分析することができます.
TraceViewでは、次の2つのデータが得られます.
  • 単一実行で最も時間がかかる方法
  • の実行回数が最も多い方法
  • .
    次に、TraceViewはどのように使いますか?
    性能の最適化の分析の中で神器の地位のTraceViewとして実はそんなに簡単で使いやすくて、次のいくつかのステップはできます:
    友情のヒント:以下の流れは私が自分で使う时の方式と方法で、TraceViewの使用方式は以下の1种だけではありませんよ!!
    一:生成.トレースファイル.
    自分の必要に応じて追跡範囲を選択し、分析したいコードクリップの前に追跡を開始するコードを書き込む:(パラメータはファイルの保存先、例えば携帯電話のsdcardディレクトリの下で、ファイルの名前に.trace接尾辞を付ける必要はありません)
    Debug.startMethodTracing(“trace”);

    解析するコードクリップの後にトレースを終了するコードを書き込む:(指定したパスで.traceファイルが生成されます)
    Debug.stopMethodTracing();

    2:開く.トレースファイル.
    まずAndroid Device Monitorを開き、-->File-->openFileを開き、既存のものを開きます.traceファイルでいいです.
    Macコンピュータの場合は、端末adbコマンドでコンピュータの現在のディレクトリの下にファイルを送ることができます.
    adb pull sdcard/trace.trace   test.trace

    次の画像のようなインタフェースが得られます.
    このインタフェースについて簡単に説明します.
    1.スレッドパネルは、mainおよび他のサブスレッドを含む、分析期間中に実行されたすべてのスレッドを表示します.
    2.タイムラインパネルは、各スレッドを1行とし、そのスレッドがプロセス全体でメソッドが実行される場合、1行に多くの小さな色のブロックがあります.これらのカラーブロックは収集中のメソッド呼び出しタイムラインを表し、同じ色は同じメソッドを表し、その中の各小さなカラーブロックはメソッド呼び出しを表し、カラーブロックの長さはメソッド実行時間の長さを表し、左側は最初のカラーブロック代表メソッド実行開始、最も右側のカラーブロックは最後のメソッド実行終了を表し、場合によってはカラーブロック長に基づいて大まかな判断を行うことができる.どちらのメソッドの実行時間が比較的長いかは、マウスをカラーブロックに置くと、そのメソッド呼び出しの詳細が表示され、マウスを任意にスライドさせ、どこをスライドさせ、左上隅にメソッド呼び出しの情報が表示され、CTRLキーを押してマウスホイールを拡大することができます.
    友情提示:うっかり滑って何が起こっているのか分からないほど、最初の状態に戻りたいなら、タイムラインをダブルクリックすればいい!!
    最後に、次のデータ分析パネルに重点を置きます.
    データ分析パネルでは、次の図のように、関数をクリックしてより詳細な情報を展開できます.
    各関数を展開すると、基本的に次の2つのカテゴリがあります.
  • Parents:メソッドを呼び出す親メソッド
  • Children:このメソッドが呼び出すサブクラスメソッド
  • このメソッドに再帰コールが含まれている場合は、2つのカテゴリが追加される場合があります.
  • Parents while recursive:再帰呼び出しに関連する親メソッド
  • Children while recursive:再帰呼び出しに係るサブクラスメソッド
  • データ分析パネルの列ごとに、各フィールドの意味は次のとおりです.
    私がTraceViewで分析したときの最も関心のあるデータは、Calls+Recur Calls/TotalとCpu Time/Callです.私たちが最も関心を持っているのは、呼び出し回数が少ないが、呼び出すたびに時間がかかる関数の2つです.これはCpu Time/Callから反映できる.
    もう1つは,自身の占有時間は長くないが,呼び出しが非常に頻繁な関数である.これは*Calls+Recur Calls/Total**から反映できます.
    Calls+Recur Callsの欄をクリックすると、メソッド呼び出し回数でソートできます.Cpu Time/Callの欄をクリックすると、メソッドに従って時間ソートを呼び出すことができます.
    よし、これで調べた方法の実行時間に基づいて自分のニーズを最適化できる!!
    see you