Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2923 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Résolu]VBA comment optimiser l'utilisation CPU dans un loop?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu]VBA comment optimiser l'utilisation CPU dans un loop?

n°1902707
bigbang01
Posté le 06-07-2009 à 14:35:38  profilanswer
 

Bonjour,
 
Voici une partie du code que j'utilise dans un ficher MS-Excel 2003. Dès que la procédure est lancée, le gestionnaire des tâches (sous windows XP) m'indique que l'utilisation CPU passe de 2% à 26% environ. Y-a-t-il un moyen pour réduire l'utilisation CPU? Merci pour vos suggestions.
 

Code :
  1. Sub test0Loop()
  2.     Dim t As Date, iloop As Integer
  3.     'Main loop
  4.     iloop = 1
  5.     Do While (iloop < 3 And "stop" <> Range("E5" ).value)
  6.         'Every 10 sec ...
  7.         t = Timer + 10: Do Until (Timer > t Or "stop" = Range("E5" ).value): DoEvents: Loop
  8.         ' ... do whatever need to be done
  9.         MsgBox "test"
  10.         iloop = iloop + 1
  11.     Loop
  12. End Sub


Message édité par bigbang01 le 07-07-2009 à 16:52:11
mood
Publicité
Posté le 06-07-2009 à 14:35:38  profilanswer
 

n°1902709
Deamon
Posté le 06-07-2009 à 14:46:02  profilanswer
 

Tu peux définir la priorité dans le gestionnaire des taches pour le processus mais je sais pas si ça te convient.

n°1902732
bigbang01
Posté le 06-07-2009 à 15:30:25  profilanswer
 

Deamon a écrit :

Tu peux définir la priorité dans le gestionnaire des taches pour le processus mais je sais pas si ça te convient.

Idéalement, ce que je recherche c'est remplacer la ligne 7 du code ci-dessus par une ligne de code qui consomme moins de CPU.


Message édité par bigbang01 le 06-07-2009 à 15:30:50
n°1902735
Deamon
Posté le 06-07-2009 à 15:36:46  profilanswer
 

En gros avec ton code tu veux réaliser une action à intervalle régulier ?

n°1902747
bigbang01
Posté le 06-07-2009 à 16:16:10  profilanswer
 

Deamon a écrit :

En gros avec ton code tu veux réaliser une action à intervalle régulier ?


Tout à fait, et pendant l'attente ne pas consommer autant de CPU...

n°1902768
bjone
Insert booze to continue
Posté le 06-07-2009 à 16:46:41  profilanswer
 
n°1903229
bigbang01
Posté le 07-07-2009 à 15:53:10  profilanswer
 

Merci pour ta réponse bjone. Effectivement avec le code suivant, l'utilisation CPU reste à 2% mais on ne peut pas quitter la fonction sleep en cours d'exécution sauf par exemple en utilisant Ctrl +  Pause.

Code :
  1. Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  2. Sub test2Loop()
  3.     Dim t As Date, iloop As Integer
  4.     'Main loop
  5.     iloop = 1
  6.     Do While (iloop < 3 And "stop" <> Range("E5" ).value)
  7.         'Every 10 sec ...
  8.         Sleep 10000
  9.         ' ... do whatever need to be done
  10.         MsgBox "test"
  11.         iloop = iloop + 1
  12.     Loop
  13. End Sub


n°1903240
bjone
Insert booze to continue
Posté le 07-07-2009 à 16:07:46  profilanswer
 

tu sleep de 100 ou 50 ms ça suffira pour réduire drastiquement l'utilisation cpu, à toi d'ajuster le contrôle de boucle en conséquence.


Message édité par bjone le 07-07-2009 à 16:09:34
n°1903373
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-07-2009 à 22:09:56  profilanswer
 

et un petit coup de DoEvents ça fera pas de mal


---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Résolu]VBA comment optimiser l'utilisation CPU dans un loop?

 

Sujets relatifs
[Resolu]Adaptation programme Windows vers LinuxAddition toute bête en VBA (Macro Excel)
[RESOLU] Problème de vérouillage dans ma feuille excelConvertir code C# -> VBA ou VBA -> C#
Symbole externe non résolu sous Visual[résolu] probleme fopen : php_network_getaddresses
[Résolu]Pb trigger MysqlSuite de test avec JUnit[résolu]
[Resolu][Asp.NET][C#] Composants COM et serveur IIS[VBA] Msgbox, combien de lignes maximum ?
Plus de sujets relatifs à : [Résolu]VBA comment optimiser l'utilisation CPU dans un loop?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR