Pourquoi certaines lignes dans mon application Cocoa prenant toujours à courir?
-
20-09-2019 - |
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: /
La solution
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.