52 votes

Comment profiler l'utilisation de la mémoire et les performances avec des instruments?

De tous les Instruments de Modèles de Trace, j'aime l'utiliser:

  • Les Zombies de détecter l'emplacement d'un objet est l'obtention de plus-sortie, idéal pour le débogage EXEC_BAD_ACCESS d'erreurs.
  • Les fuites afin de détecter les fuites de mémoire.
  • Core Animation w Couleur Mélangée Couches pour détecter le taux de trame et translucide sous-vues, idéal pour lisser UITableView de défilement.

J'entends toujours les gens dire pour le profil de mon application est l'utilisation de la mémoire et de la performance.

  1. Pourquoi devrais-je le profil d'utilisation de la mémoire et de la performance? Mon application fonctionne très bien.
  2. Comment dois-je faire?

J'ai utilisé des Allocations et de voir que mon iPhone commence à 1 MO total de mémoire allouée et pousse jusqu'à 5 MO après une utilisation normale. Ce qui est trop grande quantité de l'utilisation de la mémoire sur l'iPhone? iPad? Mac?

76voto

Mark Szymczyk Points 7608

Pour répondre le pourquoi, le profilage de l'utilisation de la mémoire est particulièrement important pour les applications iOS, car les iPhones et les iPads ont beaucoup moins de RAM que Mac. L'iPhone 4 dispose de 512 MO de RAM, mais les versions antérieures avaient 256 ou 128 MO. Facteur dans la RAM, le système d'exploitation utilise le multitâche et votre application ne dispose pas de beaucoup de mémoire vive pour les déchets il est donc important d'être conscient de la quantité de mémoire de votre application utilise.

Le profilage de la performance est quelque chose que vous faites habituellement lorsque votre application s'exécute lentement. Profil pour trouver la lenteur des spots dans votre code, de sorte que vous pouvez rendre le code plus rapide. Si votre application s'exécute correctement, vous n'avez pas besoin de beaucoup de profil pour la performance.

Pour répondre à la faire, utilisez les Allocations instrument de mesure de l'utilisation de la mémoire. Le Live de la colonne Octets dans l'Ensemble des Allocations catégorie vous indique la quantité de mémoire de votre application est en cours d'utilisation. Les Dotations de l'instrument heapshot analyse des mesures de la croissance de la mémoire dans votre application. Utilisez le menu sur le côté gauche de la barre du saut à faire heapshot analyse.

Le Temps Profiler instrument profils de votre application pour la performance. La partie la plus difficile en utilisant à la Fois Profiler instrument est de l'interprétation des résultats. Le Temps Profiler instrument ne va pas vous dire de votre application passe 75% de son temps en Fonction de X. Vous avez à creuser dans les données pour trouver la lenteur des spots dans votre code.

Acceptables en ce qui concerne l'utilisation de la mémoire, il dépend sur les appareils que vous souhaitez soutenir et l'application. Une application comme Xcode aide de 100 MO de RAM serait OK, mais qu'une application comme TextEdit aide de 100 MO pour un document d'une page serait un problème. 5 MO ne devrait pas être un problème pour une application iOS.

7voto

Calvin Points 96

Pour répondre à certains des commentaires de la réponse de Mark:

Les octets réels d'allocations n'incluent pas la mémoire de texture OpenGL, utilisée par CALayer / UIViews. C’est la source du désaccord avec le moniteur de mémoire.

Voir la réponse à cette question ici: Comprendre la consommation de mémoire sur iPhone

3voto

CarmeloS Points 1517

La mémoire réellement chargée dans la mémoire physique de l'appareil correspond aux Resident Memory en VM Tracker Instrument .

Allocation Instrument ne marque que la mémoire créée par malloc/[NSObject alloc] et certains tampons de structure, par exemple, le bitmap d'image décompressée n'est pas inclus dans Allocation Instrument mais utilise toujours la plus grande partie de votre mémoire. .

Veuillez regarder WWDC 2012 Session 242 Performance de l'application iOS: Mémoire pour obtenir les informations d'Apple.

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