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

Signaler
Messages postés
108
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
6 décembre 2007
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
-
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

Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
27 novembre 2007

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 --
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
55
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
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Le compilateur a une option optimize ! mais il ne fera pas des merveilles si ton code est trop mal structuré..
Messages postés
109
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
4 juin 2008

Ç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!
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
55
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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
55
Reduire l'application pour "recuperer" la mémoire ne sert a rien.

Voici une bonne lecture sur le sujet



Mx