5秒ごとに実行されるアプリ内で関数をプロファイリングしています。しかし、私は、トレースビューの "Calls + Rec/Total"オプションでは、コールの半分しか表示されません。私はサンプリング間隔として1マイクロ秒のサンプルベースのプロファイリングを使用しています。私はこのサンプリングレートで試してみましたが、目に見える改善はありませんでした。たとえば、私が236秒間ビューを実行すると、「Call + Rec/Total」オプションで47回のコールを取得する必要がありますが、下の図に示すように20回しか表示されません。誰でも私が間違っていることをコメントできますか?Android Traceview(サンプリングベースのトレース)に実際の関数呼び出し数が反映されていません
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
UPDATE: 私は@kwsと私の議論に基づいて、(元々のAndroid 5.1.1との)二サムスンでAndroid 4.4.4をインストールし、現在サンプルベースの方法がありますそれでうまくいく。しかし、Android 6.0.1を搭載したスマートウォッチは、まだトレースビューで古い方法で動作しています。
アップデート2: 私はそれは、これらの機能は、2つのサンプル間で実行され、それがこのプロファイラでは見逃されることが考えられますので、サンプリングに基づく方法は、非常に軽量な機能をキャプチャする解像度を持っていないと思います。サンプリング間隔としてマイクロ秒単位でデータを記録していますが、そのような詳細な粒度に到達できるかどうかは疑問です。この議論の背後にある理由は、非常に軽量な関数をテストしたときに、すべての呼び出しが3つのデバイスすべてで捕捉されたわけではないということです。
それぞれのメソッド呼び出しを記録しましたか?実際のメソッドコールの数は何でしたか? – kws
私は、プロファイラが各メソッド呼び出しを記録することを期待しています。この場合のメソッド呼び出しの実際の数は47でした。私は何度も実験を繰り返しましたが、同じ結果が私には分かりません。私のサンプリング間隔は1マイクロ秒と非常に小さいので、すべてのメソッド呼び出しをキャプチャする必要があります。さらに、さまざまなアンドロイドバージョンのさまざまなデバイスで動作が異なります。 – utengr
ここではルート状態に何か役割があるかどうかは分かりません。 – utengr