Salut
j'ai un gros souci de perfs, et je ne sais pas trop comment y remédier :
En regardant la taille de RAM utilisée par une appli WPF de base, on est déjà à plus de 20 Mo dès le lancement d'une appli, même s'il n'y a rien du tout sur la Form...déjà là je trouve ça énorme, mais bon...c'est du .Net et même en Winforms classique ça prenait déjà beaucoup de mémoire.
Le problème que j'ai c'est lorsque je charge un Bitmap dans un contrôle Image. Là on passe tout de suite de 20 Mo à 40 Mo utilisés, sachant que mon Bitmap (chargé à partir du disque via son Uri) pèse environ 1 Mo...je me dis que forcément le contrôle Image instancie un paquet de propriétés lors de son chargement, mais quand même !!! Où sont utilisés les 19 mo restants ??? Bizarrement, si j'en charge une deuxième, je passe à environ 50 Mo utilisés, puis à 68 mo pour une troisième...
Bref, sans tout le temps regarder mon gestionnaire de tâches, et en connaissant un chouilla comment fonctionne le Garbage Collector, ça me turlupine assez pour que je me demande vraiment si WPF a été pensé pour la simplicité d'usage...parce que depuis que je travaille avec, je n'ai pas arrêté de devoir contourner les moyens classiques, ne serait-ce que pour afficher des miniatures via une virtualisation à la mano pour ne pas tout charger en mémoire...
J'aimerais savoir en fait quel est pour vous le meilleur moyen de charger une image de grande taille (réduite lors de l'affichage - stretch quoi...) sans pour autant faire gonfler de façon exponentielle la mémoire vive utilisée par l'appli.
Pour ma part, je me suis penché vers l'utilisation d'ImageBrushes Freezées, mais c'est assez chiant si on veut par exemple binder la taille de l'image affichée à un slider (bah ouais, on doit binder le slider avec la taille du border contant la brush...relou...)
enfin bon....help....![]()
Partager