[R] Interrogation sur un code du tuto Autoit

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Chrnos023
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mer. 07 mai 2014 10:47
Status : Hors ligne

[R] Interrogation sur un code du tuto Autoit

#1

Message par Chrnos023 »

Bonjour,

De nouveau dans l'aide générale.

J'étudie en ce moment le mode événementiel sur le site du zero.
Je me pose une question sur le code suivant:
► Afficher le texte
Pourquoi mettre une boucle avec juste un sleep à l'intérieur????
Voir ce bout de code:
► Afficher le texte
D'avance merci de votre aide.
Modifié en dernier par Chrnos023 le lun. 12 mai 2014 14:33, modifié 1 fois.
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..]Interrogation sur un code du tuto Autoit

#2

Message par Ks10 »

D'après ce que j'ai pu voir et constater cela réduit la consommation du CPU.
Mais inutile de mettre un Sleep(1000)
Un sleep(100) suffit.

Fait une expérimentation :

Crée un script avec une boucle sans un sleep et regarde ta consommation CPU.
Met un sleep et regarde à nouveau.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..]Interrogation sur un code du tuto Autoit

#3

Message par jguinch »

Effectivement, même un Sleep(10) permet de réduire la consommation CPU.
Par contre, s'il n'y a rien d'autre dans la boucle, on peut même mettre une valeur plus importante, ce qui réduira encore plus la consommation : Sleep(0xFFFFFF) par ex.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Chrnos023
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mer. 07 mai 2014 10:47
Status : Hors ligne

Re: [..] Interrogation sur un code du tuto Autoit

#4

Message par Chrnos023 »

J'ai remarqué en mettant en commentaire la boucle infini que la fenêtre apparait et disparait.
Je pensais que la boucle infini qu'on utilise en programmation séquentielle était inutile en programmation événementielle.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2128
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Interrogation sur un code du tuto Autoit

#5

Message par TommyDDR »

La boucle infinie est la boucle qui fait tourner votre programme, sans celle-ci on arrive au bout du fichier et donc le programme se quitte.

Nous avons donc besoin de cette boucle infinie, reste plus qu'à savoir ce qu'on met dedans, si on ne met rien, alors la condition du while ici -> "1" va être exécuté en boucle et très rapidement, vérifier un "1" (sans jeu de mot) n'est pas gourmand en soit, mais le faire en boucle sans attente reviendrait à pédaler sur un vélo sans chaîne (on donne tout ce qu'on à pour pas grand chose), c'est pour cela qu'on ajoute un sleep, pour diminuer le nombre de fois où l'on va regarder la condition du while.

PS : à vérifier mais je pense qu'il est préférable de mettre while(true) à while(1), en effet, l'intérieur d'un while est une condition et sera forcément transformer en booléen, en mettant true, je pense qu'on économise une transformation.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Chrnos023
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mer. 07 mai 2014 10:47
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#6

Message par Chrnos023 »

Après test, oui la boucle sans pause fait monter le pc de mon bureau (pas très puissant) à 50% de son UC, une pause de 1 seconde le fait pas dépasser le 10% d'utilisation (pour un pc ou l'UC tourne a 3 4%).

Merci d'avoir éclaircit ce point. Je retourne à mes événements.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Interrogation sur un code du tuto Autoit

#7

Message par mikell »

@Tommy

IsBool ( variable ) Checks if a variable's base type is boolean.
Return Value
Success: 1.
Failure: 0 if expression is not boolean type.


Pourquoi pas
Success: true
Failure: false
? :mrgreen:

Edit
Cela dit une boucle comme ça marche aussi très bien :roll:
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#8

Message par jguinch »

@Tommy : sur le principe, je suis d'accord pour dire que While True devrait être plus rapide que While 1 puisqu'il n'y a pas besoin d'exécuter le code...

J'ai fait un petit test, j'ai été surpris de voir que c'est While 1 qui est plus rapide à chaque fois (même si j'inverse les 2 tests) :
► Afficher le texte
Vous pouvez tester de votre côté ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2128
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#9

Message par TommyDDR »

Je n'ai pas le bon PC pour tester ça (vive les entreprises qui fournissent des bêtes de courses à leurs employers...).

Les whiles varient de 600ms à 3400ms (et encore, j'ai du diviser par 10 le x max) donc pas représentatifs, je resterai chez moi ce soir.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Chrnos023
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mer. 07 mai 2014 10:47
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#10

Message par Chrnos023 »

voici le résultat du pc du boulot:
Avec True : 13477.1723235628
Avec 1 : 12927.0091275803
While 1 a gagné+>15:40:50 AutoIt3.exe ended.rc:0
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#11

Message par TT22 »

Avec True : 9813.02088826585
Avec 1 : 9594.33869525905
While 1 a gagné
Cordialement,
TT22
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2128
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#12

Message par TommyDDR »

Avec True : 3656.09928527831
Avec 1 : 3517.62097063391
While 1 a gagné

En effet le while 1 gagne toujours.

(Par contre il va falloir songer à vous acheter des vrais PC les gars :o )
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#13

Message par jguinch »

Avec True : 7589.71065886528
Avec 1 : 7526.57334437988
While 1 a gagné

Donc au final, je crois qu'on peut conclure que While 1 est à préférer à While True, même si on ne sait pas trop pourquoi...
Ca nous a bien fait avancer le Schmilblick ! :D

Edit : et Mikell, tu as toujours ton PC sous XP ? Ca donne quoi ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#14

Message par ZDS »

Avec True : 3156.02175045564
Avec 1 : 3034.71175977151
Avec $true : 3374.95722152416
While 1 a gagné

+1 avec les dires de TommyDDR ^^

(Je pense que True est interprété presque comme le sont les variables, peut-être est-ce à cause de ça vu que ça reste un mot clef et non une véritable valeur)
► Afficher le texte
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#15

Message par mikell »

Avec True : 6084.80830375447
Avec 1 : 6035.86535150891
While 1 a gagné>Exit code: 0 Time: 12.397

Mon vieux PC sous XP gavé de machins n'est pas si lent ma foi :mrgreen:
La différence tient peut-être (?) au temps qu'AutoIt va mettre à lire les 4 caractères de 'true' et à les traduire en booléen
Avec 25 : 6043.89742547215
Avec 1 : 6040.9263602908
While 1 a gagné>Exit code: 0 Time: 12.398
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#16

Message par jchd »

Parser le token, en déterminer la nature (constante, variable, mot-clé, fonction) puis la valeur et traiter cet argument à chaque tour de boucle. Il me semble évident que c'est un poil plus long pour True que pour 1.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2128
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#17

Message par TommyDDR »

Voilà comment clore un sujet, merci jchd.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Chrnos023
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mer. 07 mai 2014 10:47
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#18

Message par Chrnos023 »

Je test sur mon pc gamer.
Avatar du membre
Chrnos023
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mer. 07 mai 2014 10:47
Status : Hors ligne

Re: [R] Interrogation sur un code du tuto Autoit

#19

Message par Chrnos023 »

true: 4507.9740313695
1: 4419.15756135952
Répondre