hred1
Messages postés108Date d'inscriptionsamedi 9 avril 2005StatutMembreDernière intervention 6 décembre 2007
-
5 juil. 2005 à 10:13
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 2008
-
6 juil. 2005 à 09:03
Bonjour,
Voilà ma question : mes forms sont très chargées (Images, dll, ocx....). Et celà retard l'exécution de mon projet et le passage d'une form à autre que dois-je faire pour éviter ce problème. Merci d'avance
aogie
Messages postés108Date d'inscriptionvendredi 11 juillet 2003StatutMembreDernière intervention27 novembre 2007 5 juil. 2005 à 11:01
Bonjour,
"Optimiser ton code, tu devras" : Les images utilisées dans tout le
programme peuvent par exemple être chargées dans des membres statiques
de la classe de démarrage.
Un formulaire utilisé très souvent (comme une boîte de configuration)
peut être conservé comme membre d'instance. Au lieu d'accepter sa
fermeture, tu le caches mais après l'avoir réduit !!
En effet, fais le test avec le "Gestionnaire de tâches" sur un projet
"Hello World". La moindre fenêtre créée et affichée fait que ton
exécutable représente environ 11 Mo en mémoire. Tu réduis la fenêtre et
on tombe à 300 Ko !!! Tu la restaures et on ne passe qu'à 2 Mo !!! En
agissant sur cette fenêtre ça remonte ensuite doucement...
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 5 juil. 2005 à 11:06
Si le code est aussi gros et lent, tu peux tester la génération d'une
image native de ton assembly avec ngen.exe, pour voir si les
performances s'acroissent.
Chris_LaFouine
Messages postés109Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention 4 juin 2008 6 juil. 2005 à 08:17
Ça m'intéresse à fond... y a pas un moyen de "pré-charger" le form pour
que le programme n'utilise que 2Mo de ressources dès le début?
Au pire, on lance l'événement de réduction puis d'agrandissement, mais c'est pas terrible!
Par exemple, j'utilise des classe qui charge en mémoire le contenu
d'une petite base de données dans un Hashtable afin de l'exploiter plus
rapidement... ça évite les accès intenpestifs à la base de données.
Mais le programme atteint dès le début 20Mo. C 'est un peu énorme quand
même! D'où mon intéret pour l'optimisation.
Par contre, quand je vois des programmes comme Media Player ou
MusicMatch Jukebox, la mémoire est régulièrement vidée. Par exemple, le
processus occupe 5Mo augmente au fur et à mesure puis d'un coup, il
retombe à 3Mo et remonte puis se vide à nouveau, etc... Est ce qu'il y
a un moyen pour lancer le ramasse-miettes pour faire ce type
d'optimisation?
Sinon, il faut savoir que dès que vous changer un objet String, ce
couillon de .NET crée un nouvel objet! Ce qui peut rapidement saturer
la mémoire!
Vous n’avez pas trouvé la réponse que vous recherchez ?
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 6 juil. 2005 à 08:26
Sinon, il faut savoir que dès que vous changer un objet String, ce
couillon de .NET crée un nouvel objet! Ce qui peut rapidement saturer
la mémoire!
La classe string est immuable, il faut utiliser la classe System.Text.StringBuilder pour faire des concaténations de chaines sans perte de performances
Sinon, si tu veux déclencher le ramasse-miettes, il te suffit d'appeler GC.Collect()