2 votes

Comment diagnostiquer un retard inattendu lors du dragage ?

De temps en temps, l'une de mes applications subit un retard de 2 à 10 secondes lorsqu'elle fait glisser un objet dans une vue complexe. Dans certains cas, le délai est suffisant pour faire apparaître le curseur d'attente (pizza tournante de la mort).

Le Time Profiler ne révèle rien de très remarquable -- juste les appels de dessin attendus pour mettre à jour la vue au fur et à mesure que l'objet est glissé. (Cela représente beaucoup de calculs, mais je ne vois pas de différence évidente dans le profil pendant les pauses et entre les pauses).

Le profileur de mémoire ne révèle rien de spécial sur les pauses. L'allocation semble plate tout au long de la traînée. Les fuites sont propres (ma première hypothèse était que je faisais tourner trop d'objets autoreleased, mais cela ne semble pas être le problème).

Le moniteur d'activité indique que pendant le déplacement, j'utilise à peu près un cœur pour tous les redessinages. C'est ce à quoi je m'attends.

Une idée de l'endroit où chercher ensuite ?

0voto

joerick Points 6215

Hmm. Vous pourriez peut-être essayer d'exécuter Instruments.app avec l'option "Record Waiting Threads" activée. Cela vous montrera où le code attend et où il s'exécute. Il se peut que vous soyez assis dans un sémaphore ou que vous fassiez des entrées-sorties - qui apparaîtront dans ce mode.

Instruments

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X