2

私は非常に奇妙な問題を抱えています。切り離されたスレッドでループを実行していますが、ループ内のいくつかのコード行 (ループの反復ごとに異なる行) の実行に長い時間がかかります (~45 秒)。 NSXMLDocument をデータで初期化します。この問題も非常に一貫性がなく、同じ場所や毎回発生するわけではありません。なぜこれが起こっているのですか?

PS。私のコードは非常に長く複雑で、問題が一貫していないため、サンプル コードを投稿できません :/

4

3 に答える 3

2

パフォーマンスの問題について推測しないでください。InstrumentsアプリのCPU SamplerインストゥルメントやSharkなど、何が問題なのかを判断するのに役立つツールがたくさんあります。これらはどちらも、CPU 時間がどこに行っているかを正確に分析できるため、何かを行うことができます。

于 2010-02-12T02:30:09.857 に答える
0

他の人が言ったこと; 計器を使用して、時間がどこに向かっているのかを特定する必要があります。特に、CPUサンプラーインスツルメントと仮想メモリアクティビティインスツルメントを使用する必要があります。

その音から、あなたのアプリケーションがシステムのRAMを使い果たし、ディスクへのページングを開始しているに違いありません。これにより、説明したとおりにキルパフォーマンスがフラットになります。実行中の不確定な時間に、アプリが非常に遅いか、しばらく一時停止しているように見えます。

おそらく、Object Allocインスツルメントを使用して、メモリを期待どおりに使用しているかどうか、および非常に多く使用している場合は、メモリ使用を最適化できる場所を特定する必要があります。

于 2010-02-12T02:42:58.347 に答える
0

Instrumentsを使用して理由を調べます。

于 2010-02-12T01:41:17.650 に答える