Question

Je vais avoir un problème très étrange. Je courais une boucle dans un fil détaché, et quelques lignes de code dans ma boucle (lignes différentes dans chaque itération de la boucle) prennent beaucoup de temps (~ 45 secondes) pour exécuter, même si elles sont des commandes simples comme initialiser un NSXMLDocument avec des données. Ce problème est également très incohérent, et il ne se produit pas au même endroit ou à chaque fois. Toutes les idées pourquoi cela se passe?

PS. Depuis mon code est si long et complexe, et le problème ne correspond pas, je ne peux pas afficher de l'exemple de code: /

Était-ce utile?

La solution

Ne pas deviner les problèmes de performance. Il y a beaucoup d'outils pour vous aider à déterminer ce qui va mal, y compris le CPU Sampler instrument dans le app Instruments et Shark . Ces deux éléments vous permettra d'analyser exactement où le temps CPU va, vous pouvez donc faire quelque chose.

Autres conseils

Utilisez Instruments pour savoir pourquoi.

Qu'est-ce que d'autres ont dit; vous devez utiliser des instruments pour identifier où le temps va. En particulier, vous aurez envie d'utiliser l'instrument de l'échantillonneur de CPU et l'instrument de l'activité de la mémoire virtuelle.

A partir des sons de celui-ci, je serais prêt à parier que votre application est à l'origine du système à court de RAM et commencer la recherche sur le disque. Cela à plat tuer la performance exactement de la façon que vous décrivez; à un moment indéterminé pendant la course, il semble que l'application est soit super lent ou fait une pause juste pour un moment.

Vous devriez utiliser probablement aussi l'objet instrument Alloc pour savoir si vous utilisez la mémoire comme prévu et, si vous utilisez beaucoup, vous pouvez optimiser votre utilisation de la mémoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top