5 秒ごとに実行されるアプリ内の関数をプロファイリングしています。ただし、トレース ビューの [Calls + Rec/Total] オプションには、通話の半分しか表示されません。サンプリング間隔として 1 マイクロ秒のサンプルベースのプロファイリングを使用しています。このサンプリング レートで試してみましたが、目に見える改善は見られませんでした。たとえば、ビューを 236 秒間実行すると、[Call + Rec/Total] オプションで 47 の呼び出しが表示されるはずですが、下の図に示すように 20 しか表示されません。誰かが私が間違っていることについてコメントできますか?
Tested devices:
Device 1: SmartWatch LG R (Android 6.0.1), observes this problem
Device 2: Samsung Galaxy S2 (Android 5.0.1 Custom ROM), observes this problem
Device 3: Samsung Galaxy S2 (Android 4.4, Custom ROM), works fine
更新: @kws との話し合いに基づいて、2 番目の Samsung (元々は Android 5.1.1 を使用) に Android 4.4.4 をインストールしましたが、現在はサンプリング ベースの方法で問題なく動作しています。ただし、Android 6.0.1 を搭載したスマートウォッチは、依然としてトレース ビューで古い方法で動作しています。
更新 2: サンプリング ベースの方法では、非常に軽量な関数をキャプチャする解決策がないと思います。これらの関数は 2 つのサンプル間で実行され、このプロファイラーでは見逃される可能性があるためです。サンプリング間隔はマイクロ秒単位でデータを記録していますが、ここまで細かい粒度まで到達できるとは思えません。この引数の背後にある理由は、非常に軽量な関数をテストしたときに、すべての呼び出しが 3 つのデバイスすべてでキャッチされたわけではないということです。