Accélérer (optimiser) mon projet quelle astuce ?

hred1 Messages postés 108 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 6 décembre 2007 - 5 juil. 2005 à 10:13
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 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

RED1

6 réponses

aogie Messages postés 108 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 27 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...


-- AOGie --
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
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.

Mx
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
5 juil. 2005 à 11:13
Le compilateur a une option optimize ! mais il ne fera pas des merveilles si ton code est trop mal structuré..
0
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Derniè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!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
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()


Mx
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
6 juil. 2005 à 09:03
Reduire l'application pour "recuperer" la mémoire ne sert a rien.

Voici une bonne lecture sur le sujet



Mx
0
Rejoignez-nous