1

この質問は、traceview によって表示されるデータ列の意味に関するものではありません - 私はそれを理解していると思います。

Android 3.2 デバイスと Android 4.1 デバイスでキャプチャされた traceview のトレースを見て、いくつかのことに気付きました。私の質問は、これらが新しい Android リリースで行われた既知の改善なのか、それともデバイスの制限なのか、それともアーティファクトではなく実際に意味があるのか​​ということです。

私が比較している2つのデバイス/OS

  • Android 3.2 を実行する 2 コアの Samsung Galaxy Tab 10.1
  • Android 4.1 を実行する 4 コアの Google Nexus 7 タブレット

最初に気付いたのは、Android 3.2 を搭載した Samsung Galaxy Tab でキャプチャされたトレースには、「リアルタイム」列がなく、「CPU 時間」列だけがあることです。誰かが理由を知っていますか?

次に気付いたのは、Android 3.2 を搭載した Samsung Galaxy Tab には 2 つのコアがありますが、Samsung Galaxy Tab から取得したキャプチャの traceview スレッド アクティビティ ラインには、特定の時点で実行されているスレッドが常に 1 つしか表示されないことです。一方、Google Nexus 7 では、複数のスレッドが同時に実行されていることが示されています。

両方のデバイスで実行されているアプリは、いくつかのスレッドを起動するテスト アプリであり、メインの UI スレッドを含む各スレッドがしばらくループして、フィボナッチ数列を計算します。これらのスレッドのうち 2 つが、Samsung Galaxy Tab やその他の 2 コアのデバイスで同時に実行できない理由はありません。さらに、一定量の計算を実行するのにかかる時間は、スレッドが 2 つある場合とスレッドが 1 つしかない場合の各スレッドでほぼ同じです。したがって、2 つのスレッドは実際には期待どおりに同時に実行されている必要があります。次に、2 コア デバイスに 3 つのスレッドがある場合、各スレッドが計算を行うのにかかる時間が 50% 増加します。

したがって、これは Android 3.2 を実行している Samsung Galaxy Tab 10.1 でのトレース キャプチャの制限に過ぎないと思います。呼び出しが多い「実際の」アプリのこのデバイスでは、traceview は 2 つのスレッドが同時に実行されているように見えますが、ズームインすると、実際にはアクティビティがインターリーブされ、2 つのスレッドが同時にアクティブとして表示されることはありません。

4

0 に答える 0