Usage CPU à 100% programme VB

Résolu
isfaen Messages postés 74 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 19 octobre 2011 - 13 juil. 2010 à 17:15
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 16 juil. 2010 à 11:13
Bonjour à tous,

Je me pose une question toute bête: un programme VB peut il consommer 100% de mon CPU sachant que je tourne sous XP avc 2Go de Ram et un processeur à 2.26GH?
Le programme en lui même ne m'a pas l'air très long à faire d'autant plus que je vais le corser nettement plus avec le temps.

Ormis les astuces classiques que j'ai pu trouver, y a t il un moyen d'optimiser la vitesse d'execution?

Merci pour vos avis!


Alex

11 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 juil. 2010 à 17:31
Salut,

Bien sûr que c'est possible, si tu codes avec les pieds, tu peux monter très vite à 100%, par exemple si tu fais :
while (true)
doevents
if (unevariable) then
exit do
end if
wend

là tout de suite tu monte à 100% tant que ta variable "unevariable" est false
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
3
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
13 juil. 2010 à 17:54
Salut,
si tu veux optimiser la vitesse d'exécution,
il faut optimiser le code, c'est à dire
faire au plus simple pour que le processeur
ai le minumum de calculs à effectuer,
par exemple préferer Case à If si il
y a beaucoup de choix différents,
ou par exemple, eviter de reposer
des conditions qui ont déjà étés verifiées...
Mais je ne saurais pas expliquer beaucoup...
Si ça t'intéresse regarde un peu le language
assembleur (ASM), qui communique directement avec le processeur.
3
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
15 juil. 2010 à 15:34
Bonjour,

SELECT CASE permet le test dans un intervalle.

exemple :

SELECT CASE Variable
CASE 11 TO 20
....
CASE 21 TO 30
....
END SELECT


Amicalement,
Us.
3
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
15 juil. 2010 à 15:39
Si tu as 5 minutes, je te propose ma modeste video sur SELECT CASE... http://fordom.free.fr/tuto/TutoVideoVBA/L8/L8.html

Amicalement,
Us.
3

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

Posez votre question
isfaen Messages postés 74 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 19 octobre 2011
13 juil. 2010 à 17:41
Ok,je veillerai donc à optimiser mon programme...

Merci pour ta franchise,


Alex
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 juil. 2010 à 18:07
Salut,

Oui enfin, avant d'optimiser les tests if par des select case pour y gagner 0.00001 ms, il y a bien plus de pistes d'optimisation à faire avant quand même.

Notamment éviter de rafraîchir les listes/grid à chaque modification d'un élément si tu en modifie une centaine, retracer toute une image alors qu'il suffit de ne tracer que quelques pixels, faire des requêtes SQL optimisée qui renvoie uniquement les informations que tu as besoin, bref des trucs du genre qui peuvent très rapidement te faire ramer ton programme alors que c'est très simple d'y remédier.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
14 juil. 2010 à 23:20
100% en accord avec DarkSidious, difficile de dire autrement en même temps... On peut rajouter le fameux DoEvents à utiliser qu'à très bon escient... De plus, quand tu parles de VB, j'espère que tu parles de VB.NET, plutôt que VB6. La vitesse d'exécution de VB.NET étant bien plus rapide...

Amicalement,
Us.
0
isfaen Messages postés 74 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 19 octobre 2011
15 juil. 2010 à 15:29
En fait j'ai effectivement une fonction avec énormement de choix différents: environ 23 choix possible mais non pas selon la valeur d'une variable mais selon l'intervalle dans lequel elle se situe.

select Case ne me permet pas de travailler avec ces intervalles, y a t il une astuce ou dois-je forcer les if, elsif, else?

Merci par avance

PS: le code:

Public Function parametres(ByVal dod As Date) As Double
        If dod < #6/30/2008# Then
            txdecote = 0
            durass = 150
            ageannuldec = 0
        ElseIf dod > #6/30/2008# And dod < #1/1/2009# Then
            txdecote = 0
            durass = 151
            ageannuldec = 0
        ElseIf dod > #12/31/2008# And dod < #7/1/2009# Then
            txdecote = 0
            durass = 152
            ageannuldec = 0
        ElseIf dod > #6/30/2009# And dod < #1/1/2010# Then
            txdecote = 0
            durass = 153
            ageannuldec = 0
        ElseIf dod > #12/31/2009# And dod < #7/1/2010# Then
            txdecote = 0
            durass = 154
            ageannuldec = 0
        ElseIf dod > #6/30/2010# And dod < #1/1/2011# Then
            txdecote = 0.00125
            durass = 155
            ageannuldec = 61
        ElseIf dod > #12/31/2010# And dod < #7/1/2011# Then
            txdecote = 0.00125
            durass = 156
            ageannuldec = 61
        ElseIf dod > #6/30/2011# And dod < #1/1/2012# Then
            txdecote = 0.0025
            durass = 157
            ageannuldec = 61.5
        ElseIf dod > #12/31/2011# And dod < #7/1/2012# Then
            txdecote = 0.0025
            durass = 158
            ageannuldec = 61.5
        ElseIf dod > #6/30/2012# And dod < #12/1/2012# Then
            txdecote = 0.0025
            durass = 159
            ageannuldec = 62
        ElseIf dod > #11/30/2012# And dod < #7/1/2013# Then
            txdecote = 0.00375
            durass = 160
            ageannuldec = 62
        ElseIf dod > #6/30/2013# And dod < #7/1/2014# Then
            txdecote = 0.005
            durass = 161
            ageannuldec = 62.25
        ElseIf dod > #6/30/2014# And dod < #7/1/2015# Then
            txdecote = 0.00625
            durass = 162
            ageannuldec = 62.5
        ElseIf dod > #6/30/2015# And dod < #7/1/2016# Then
            txdecote = 0.0075
            durass = 163
            ageannuldec = 62.75
        ElseIf dod > #6/30/2016# And dod < #7/1/2017# Then
            txdecote = 0.00875
            durass = 164
            ageannuldec = 63
        ElseIf dod > #6/30/2017# And dod < #7/1/2018# Then
            txdecote = 0.01
            durass = 165
            ageannuldec = 63.25
        ElseIf dod > #6/30/2018# And dod < #7/1/2019# Then
            txdecote = 0.01125
            durass = 166
            ageannuldec = 63.5
        ElseIf dod > #6/30/2019# And dod < #7/1/2020# Then
            txdecote = 0.0125
            durass = 167
            ageannuldec = 63.75
        ElseIf dod > #6/30/2020# And dod < #7/1/2021# Then
            txdecote = 0.0125
            durass = 168
            ageannuldec = 64
        ElseIf dod > #6/30/2021# And dod < #7/1/2022# Then
            txdecote = 0.0125
            durass = 169
            ageannuldec = 64.25
        ElseIf dod > #6/30/2022# And dod < #7/1/2023# Then
            txdecote = 0.0125
            durass = 170
            ageannuldec = 64.5
        ElseIf dod > #6/30/2023# And dod < #7/1/2024# Then
            txdecote = 0.0125
            durass = 171
            ageannuldec = 64.75
        ElseIf dod > #6/30/2024# Then
            txdecote = 0.0125
            durass = 172
            ageannuldec = 65
        End If
    End Function


Alex
0
isfaen Messages postés 74 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 19 octobre 2011
15 juil. 2010 à 15:36
Ok, j'avais testé

Case >11 and <12


Merci beaucoup!

Alex
0
isfaen Messages postés 74 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 19 octobre 2011
15 juil. 2010 à 16:11
La vidéo est on ne peut plus clair, je ferai un tour sur ton site si j'ai un souci dans le futur (le prochain parlera probablement des problèmes de maximisation de fonctions codé en VB, si t'as une vidéo dessus je suis preneur )

Merci à tous pour vos réponses!


Alex
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
16 juil. 2010 à 11:13
"maximisation de fonctions codé en VB"


Euh... d'un coup ça monte d'un cran... Faudra voir avec BruNews, car je ne serais plus de taille...

Bonne prog,

Amicalement,
Us.
0
Rejoignez-nous