5

Instruments の Time Profiler を使用して特定の操作を強化する方法についてアドバイスを求めています。オンデマンドでコンテンツをロードするページング スクロール ビューがあります。新しいページがスクロールされると、別のページが 2 ページ右にロードされます。これは、現在のページが画面の 50% スクロールされたときに発生し、低速のデバイスでは読み込みがボトルネックになり、スクロールの滑らかさが妨げられます。スクロールは、50% パイントで非常に短時間一時停止してから、再び動作に戻るように感じます。

私のアプリケーションにはネットワーク コンポーネントがないため、ボトル ネックはデータのフェッチ中ではなく、すべて新しいビューの読み込み中にあることに注意してください。

これを改善するために、移行のベンチマークを行って、機能強化の効果を評価できるようにする必要があります。WWDC セッションを見て、時間プロファイラーの基本を理解しましたが、正しいものを見ているかどうか確信が持てません。

インストゥルメントを実行してからスクロールを実行しています。CPU アクティビティの予想されるスパイクが見られます。次に、スパイクを選択してシンボル名を確認します。以下に示すように、システム ライブラリを非表示にして Obj-C を表示すると、81.0 ミリ秒の実行時間で 90% の短いスパイクが発生します。

ここに画像の説明を入力

コードをドリルダウンすると、混乱が生じます。最大の要因の 1 つ (23 ミリ秒) は、sortedArrayUsingDescriptors. それについて私ができることはあまりありません。それ以外の場合、根本的な原因は CGRectInset を使用することです - さらに数ミリ秒。画像の使用などに関連するものをもっと見たいと思っていたと思います。

正しいものをベンチマークしているかどうかはわかりません。6 ミリ秒の操作を 5 ミリ秒に減らして、違いを期待するつもりですか? 問題を診断するための適切なツールを検討していますか?

何を測定し、どこに力を注ぐべきかについてのヒントや指示は、本当に価値があります.

4

1 に答える 1

1

グランド セントラル ディスパッチを使用して、バックグラウンド スレッドでできるだけ多くの非 UI 作業 (フェッチ、並べ替え、選択など) を行うことを検討してください。これにより、マルチ CPU マシンの能力が活用され、メイン スレッドからより早く抜け出すことができます。必要に応じて UI 作業にメイン スレッドのみを使用します。

于 2012-11-05T06:09:52.487 に答える