Mon appli est finie. Que reste-t-il à  faire ?

Philippe49Philippe49 Membre
octobre 2007 modifié dans Vos applications #1
Ma première appli est finie.
Que reste-t-il à  faire ?

Je lis performance overview

Le chapitre commence par l'utilisation de top. Je préfère l'interface graphique Moniteur d'activités Est-ce que j'y perds quelque chose

Première surprise en lançant mon appli (en mode DEBUG), elle comporte 4 threads (?), alors que je n'en n'ai créé aucun, sauf peut-être un NSSpeechSynthesizer qui me semble fonctionner par ce biais.

AU bout de 10 minutes d'utilisation, la mémoire réelle s'est stabilisée à  35 Mo (je ne vois vraiment pas ce qui a pu créer 10 Mo : je crée une NSString que je fais lire au NSSpeechSynthesizer). A priori, il n'y a pas de fuite mémoire, on verra plus tard avec les autres outils. Le nombre de threads est passé régulièrement par 5 et 6, ce qui est logique  si on admet le nombre initial de 4 threads + le NSSpeechSynthesizer qui doit fonctionner en thread.

Merci de vos éclaircissements, et du partage d'expérience.





[Fichier joint supprimé par l'administrateur]

Réponses

  • psychoh13psychoh13 Mothership Developer Membre
    15:22 modifié #2
    Déjà  est-ce que tu as testé ton application en mode Release ?
  • Philippe49Philippe49 Membre
    octobre 2007 modifié #3
    Mode release  sans problème
    La mémoire réelle passe de 5,8 Mo à  17,5 Mo en vitesse de croisière
    C'est le synthesizer qui fait augmenter de 10 Mo, puis une option de redimensionnement de la fenêtre de l'appli qui fait le petit reste.

    [Fichier joint supprimé par l'administrateur]
  • psychoh13psychoh13 Mothership Developer Membre
    15:22 modifié #4
    Déjà , pour faire de vrais tests de performance, je ne pense pas que le mode Debug soit le plus approprié, il vaut mieux se trouver en "situation réelle", c'est-à -dire en Release

    Sinon, ton application utilise quoi à  part NSSpeechSynthesizer ?
    Certains éléments peuvent générer pour elles-mêmes des threads internes que tu n'as pas à  gérer.
  • schlumschlum Membre
    octobre 2007 modifié #5
    Je pense que c'est des threads POSIX utilisés par la gestion de l'interface (routines d'affichage), et que ton application n'est pas pour autant "multithreaded" au sens de NSThread.

    Pour en être sûr, demande :
    NSLog(@"%s",[NSThread isMultiThreaded]?"multi-threaded":"not multi-threaded");
    


    [Edit] Rien qu'en faisant une appli Cocoa vide, il y a déjà  2 thread d'après "top"
  • schlumschlum Membre
    15:22 modifié #6
    Il suffit d'ailleurs de faire ça quelque-part pour que le nombre de fils passe à  4 :

    [[NSOpenPanel openPanel] runModal];
    
  • Philippe49Philippe49 Membre
    octobre 2007 modifié #7
    dans 1193309203:

    Sinon, ton application utilise quoi à  part NSSpeechSynthesizer ?


    Il s'agit d'une application ultra-simple, avec quelques bindings pour les préférences, le textField, et les options du tiroir. Il y a un panel preference, et un panel about. ... pas grand chose donc
    Le code le plus long est le switch() dans la lecture de l'heure ..

    J'essaie maintenant shark
    Que faut-il y lire ?

    [Fichier joint supprimé par l'administrateur]
  • Philippe49Philippe49 Membre
    15:22 modifié #8
    dans 1193310276:


    NSLog(@%s,[NSThread isMultiThreaded]?"multi-threaded":"not multi-threaded");

    [Edit] Rien qu'en faisant une appli Cocoa vide, il y a déjà  2 thread d'après "top"


    not multi-threaded ... comme prévu
  • schlumschlum Membre
    15:22 modifié #9
    Pour ce genre d'application, Shark n'a pas un grand intérêt.
    C'est pour l'optimisation des parties de code qui prennent beaucoup de temps processeur.
  • Philippe49Philippe49 Membre
    octobre 2007 modifié #10
    1) Ensuite on peut essayer Quartz Debug

    Avec le réglage comme l'indique l'image ci-dessous, on voit chaque rafraà®chissement partiel de l'interface. Rien de surprenant en ce qui concerne mon appli.  

    2) Il est bon de protéger son logiciel ...

    tablier et eddy58 en ont parlé sur ce topic

    [Fichier joint supprimé par l'administrateur]
  • Philippe49Philippe49 Membre
    octobre 2007 modifié #11
    dans 1193311805:

    Il suffit d'ailleurs de faire ça quelque-part pour que le nombre de fils passe à  4


    Dans les performance Tools, on trouve une appli sympa : Thread Viewer

    Dans mon cas, il semble y avoir
      un thread qui agit régulièrement, la boucle d'évènements sans doute
      un second qui apparaà®t lorsqu'on change le nombre, un très court instant : l'interface graphique serait treadée ?
      Et le reste agit avec le NSSpeechSynthesizer dont 3 restent en sommeil.
  • Philippe49Philippe49 Membre
    octobre 2007 modifié #12
    Passage sous Leopard - Malloc Debug
    dans 1193306417:

    La mémoire réelle passe de 5,8 Mo à  17,5 Mo en vitesse de croisière
    C'est le synthesizer qui fait augmenter de 10 Mo, puis une option de redimensionnement de la fenêtre de l'appli qui fait le petit reste.


    Passage sous Leopard, c'est un peu du pareil au même (14 Mo en vitesse de croisière).
    L'essai avec Malloc Debug donne des informations : La mémoire allouée utile ne dépasse pas 5 Mo et confirme qu'il n'y a pas de fuite mémoire.
    Cela vient nuancer la lecture des 17,5 Mo du Moniteur d'activités, les 10 Mo semblant correspondre plutot à  un espace réservé (appli, caches, ...) qu'à  un espace réellement utilisé.

    Conclusion :
    Je suis dubitatif par rapport à  tout cela .
    Que faut-il en conclure ?



    Passage sous Leopard
    Lors de la prochaine mise à  jour, comment faire en sorte que l'appli reste opérationelle sur Tiger et panther ?
    Est-il possible de le vérifier sur mon MBP désormais Léopardisé ?
  • schlumschlum Membre
    15:22 modifié #13
    Compiler sur Leopard avec le SDK 10.3.9  ;)
    Par contre, pour tester, ben il aurait fallu garder ces systèmes, ou alors faire tester par quelqu'un qui les a.
  • tabliertablier Membre
    15:22 modifié #14
    J'ai !!

    j'ai toujours le 10.2.8, le 10.3.9 et le 10.4.5 même si j'utilise le 10.4.10.
    Je peux éventuellement essayer, si ça t'interresse!!
  • Philippe49Philippe49 Membre
    15:22 modifié #15
    dans 1193511913:

    J'ai !!

    j'ai toujours le 10.2.8, le 10.3.9 et le 10.4.5 même si j'utilise le 10.4.10.
    Je peux éventuellement essayer, si ça t'interresse!!


    Merci, tablier, j'installe le téléchargement dans quelques jours, il faut encore que je teste Sparkle.

    Tu conserves Tiger et Panther sur des machines différentes ? ou tu utilises une partition ?






  • schlumschlum Membre
    15:22 modifié #16
    Je pense qu'il utilise des partitions, c'est plus pratique !
    (mais il ne faut pas avoir un ordi trop récent... Sur mon G5, je peux avoir de 10.2.8 à  10.5 !)
  • Philippe49Philippe49 Membre
    15:22 modifié #17
    dans 1193518202:

    Je pense qu'il utilise des partitions, c'est plus pratique !
    (mais il ne faut pas avoir un ordi trop récent... Sur mon G5, je peux avoir de 10.2.8 à  10.5 !)


    Sur mon MBP j'avais Panther, une fois que ma fille aura fini de le squatter (en s'en faisant offrir un à  la place), je devrais avoir une petite place. J'imagine que pour cela on crée une partition dans utilisateur de disque, et on y installe Panther. Mais cela doit dédoubler les applis de base, et le MBP n'a "que" 80 Go
  • schlumschlum Membre
    15:22 modifié #18
    Un système minimal de test ne devrait pas prendre plus de 2 Go  ;)
  • Philippe49Philippe49 Membre
    15:22 modifié #19
    dans 1193504771:

    Compiler sur Leopard avec le SDK 10.3.9  ;)


    Il va falloir le récupérer parce que XCode 3 commence au SDK 10.4u
  • schlumschlum Membre
    15:22 modifié #20
    dans 1193524493:

    dans 1193504771:

    Compiler sur Leopard avec le SDK 10.3.9  ;)


    Il va falloir le récupérer parce que XCode 3 commence au SDK 10.4u


    Ah ? J'avais cru voir le 10.3.9 sur la version Bêta utilisée à  mon boulot  ???
  • tabliertablier Membre
    15:22 modifié #21
    Merci, tablier, j'installe le téléchargement dans quelques jours, il faut encore que je teste Sparkle.

    Tu conserves Tiger et Panther sur des machines différentes ? ou tu utilises une partition ?


    Les deux! j'ai un G3 de 1998 qui fait touné MacOS 8.6, 9.2.2 et MacOSX 10.2.8
    et un PB G4 sous 10.4.10 avec un disque externe partitionné pour 10.2.8, 10.3.9 et 10.4.5.
    A certains moments j'ai l'impression d'être un collectionneur!  :P
  • Philippe49Philippe49 Membre
    15:22 modifié #22
    Depuis 98, j'en suis à  mon cinquième Mac, sixième puisque l'année dernière Apple m'a échangé gratos le MBP ... si j'avais pu les garder, j'aurais pas dit non ...
  • UniXUniX Membre
    15:22 modifié #23
    dans 1193535145:

    dans 1193524493:

    dans 1193504771:

    Compiler sur Leopard avec le SDK 10.3.9  ;)


    Il va falloir le récupérer parce que XCode 3 commence au SDK 10.4u


    Ah ? J'avais cru voir le 10.3.9 sur la version Bêta utilisée à  mon boulot  ???


    Tu as bien vu Schlum, et c'est toi Philippe qui n'a pas fait attention ....

    En fait l'installation par défaut de Xcode 3 n'installe pas le SDK 10.3.9.
    Il faut prendre le soin de choisir une installation personnalisée, et de cocher le SDK.

  • Philippe49Philippe49 Membre
    15:22 modifié #24
    dans 1193588091:

    En fait l'installation par défaut de Xcode 3 n'installe pas le SDK 10.3.9.
    Il faut prendre le soin de choisir une installation personnalisée, et de cocher le SDK.


    Ah merci UniX, je corrige cela
Connectez-vous ou Inscrivez-vous pour répondre.