Réduire l'utilisation CPU/RAM
Hello,
Quelqu'un aurait-il un lien sur des méthodes pour réduire au maximum l'utilisation du CPU et de la RAM en Objective-C ?
Connectez-vous ou Inscrivez-vous pour répondre.
Hello,
Quelqu'un aurait-il un lien sur des méthodes pour réduire au maximum l'utilisation du CPU et de la RAM en Objective-C ?
Réponses
Ne rien calculer et ne rien stocker ?
Plus sérieusement il va falloir nous donner un peu plus de contexte pour qu'on t'aide.
Qu'est-ce qui pompe ton CPU et ta RAM, dans quelles conditions. Ça s'appelle de l'optimisation et c'est intimement lié au processus que tu cherches à optimiser.
Instruments devrait t'aider à savoir ce qui consomme.
Vérifie dans un premier temps les Memory Leaks.
Puis les Allocations, CPU, etc.
Regarde ce qui est alloué/utilisé en trop alors que tu n'en aurais pas forcément besoin. C'est un processus assez long, et assez spécifique à chaque cas.
Merci
Un grand classique avec ARC (et la méconnaissance de la gestion mémoire que cela entraine pour beaucoup de programmeurs qui n'ont pas connus avant): attention aux boucles. Si beaucoup de données à traiter, et/ou de gros objets, utiliser systématiquement des Autorelease Pool. Dans le cas contraire, l'usage mémoire peut exploser de manière inconsidérée.
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html#//apple_ref/doc/uid/20000047-SW2
Merci pour l'info
Bon ben ARC doit bien faire son taf ou alors j'ai pas de data aussi lourde à traiter, l'autorelease ne change rien du tout pour mon app.
Coté CPU j'en suis à 0,85% de charge quand ça tourne de façon normal sans effectuer d'opération, 0,12% quand c'est en pause, inférieur à 0,00% que je réduit l'app dans le dock.
petite colle, j'ai ceci:
Quand je l'effectue ça me grignote de 30 à 100Mo de RAM selon la taille de l'image.
Quand je relance cette opération avec une image plus petite que la précédente ça me fait redescendre l'occupation de la RAM mais pas moyen de revenir à l'état initial.
Une idée ?
https://github.com/Old-Geek/MPD-Client/blob/master/MPD Client/Views/Album/Cover/AlbumBigCover.m
Hello,
Quand tu remplace l'image, il faut penser a supprimer la précédente
``
if self->cover.image != nil
{
[self->cover.image release];
}
self->cover.image = image;
``
Tu peux pas utiliser le release avec ARC
Edit: je précise que je fais déjà un
image, data, cover.image = nil
pour récupérer quelques Mo mais je chercher à revenir à l'état initial avant le premier affichage d'une image.Trouvé, décharger le nib après sa fermeture.
En ARC le release est automatiquement induit par l'affectation.