Page 1 sur 1

[R] Valeur de temps réelle

Posté : ven. 17 oct. 2008 20:34
par deviante
Bonsoir,

Voilà j'ai fait un script qui effectue un clique et quelques autres actions toutes les x "secondes", je met secondes entre guillemets parce qu'en faite voilà comme je m'y suis pris :

j'ai une boucle while avec dedans des if, avec un sleep(50) et à chaque fois ca incrémente un $time de 0.05, je pensais logiquement que ca me ferait des secondes précises qui auraient la meme durée qu'une vraie seconde vu que y a pas des milliers de lignes de codes entre chaque sleep...
mais voilà MES "secondes" sont plus lentes que les vrais.... mais ca c'est pas encore plus grave ce qui me gene le plus c'est que en fonction du pc sur lequel le script est executé c'est plus ou moins lent.... donc j'imagine que c'est simplement la maniere donc je my suis prise qui est biaisé et que dans le principe ca marche mais que comme chaque pc execute le code plus ou moins rapidement au final je n'arrive pas à mes fins (et il faut que tout les pcs aillent à la meme vitesse) .

Donc est ce que vous auriez une solution générale?

Merci d'avance.

Edit: voilà c'est modifié, je t'assure que y avait volonté de bien faire, j'étais aller voir le topic épinglé : à lire avant de poster pour voir ce genre de règles et je n'avais rien vu donc j'avais poster tel quel, merci de m'avoir donner le lien aulieu de me jeter:p

Re: Valeure de temps réelle

Posté : ven. 17 oct. 2008 20:53
par L4crymal

Re: [..] Valeure de temps réelle

Posté : ven. 17 oct. 2008 22:08
par sylvanie
si le script est du type

Code : Tout sélectionner

while 1
  actions
  sleep(50)
wend
 
c'est normal, car "Actions" n'est pas gratuit en temps
le temps entre 2 tours de boucle est 50ms + tps d'exécution des actions
Au mieux, l'optimisation de "Actions" fera qu'on s'approche des 50ms, mais pour arriver à 0, ça ne va pas être possible.

un compromis, si on veut réaliser une tâche toute les 50 ms sans passer par le sleep est adlibenable :

Code : Tout sélectionner

adlibenable("actions",50)
while 1
sleep(10)
wend

Func Actions
listes des actions
Endfunc
 
la boucle principale fera des sleep de 10ms pour ne pas consommer le cpu inutilement.
"Presque ..." parallèlement, la fonction Actions va être appelée toutes les 50 ms.
Si le temps d'exécution des actions est inférieur à 50 ms, alors on sera sorti de la fonction avant d'être rappelé. Si le temps d'éxécution est supérieur alors je crains qu' adlibenable ne puisse relancer la fonction qui n'a pas fini sont éxécution.
Du coups le temps ici sera max (50ms,tps exécution)

Re: [..] Valeure de temps réelle

Posté : ven. 17 oct. 2008 22:16
par timmalos
Et deviante, quand un moderateur edite votre script pour enlever une faute d'orthographe qui lui saute aux yeux, ca ne sert a rien de remettre la faute !

Si si, je vous jure,

Valeure s'ecrit valeur et pas valeure !

:arrow: La valeur est en économie la valeur d'un bien ou d'un service qui naît des besoins et des désirs contraints par :- la rareté (« ce qui est rare est cher »),- le coût (« conçu comme la somme des intrants »),- l'utilité (« si j'en ai besoin, je suis prêt à y mettre le prix »),- et ...

:arrow: Aucune definition de valeure n’a été trouvée.

D'ailleurs, j'en profite pour ... te feliciter:
"parce qu'en faite voilà comme "
J'ai jamais reussi a placer autant de mots comme toi a la suite... :wink:

Re: [..] Valeur de temps réelle

Posté : ven. 17 oct. 2008 22:20
par deviante
J'ai remis la faute parce que j'ai corrigé le titre car à la base je n'avais pas fait un titre correct donc j'ai refait un copié coller en ajoutant les crochets....j'ai pas essayé de remettre valeure je comprend pas ....

Désolé pour le pavé que j'ai pondu je vais essayer d'y remédier à l'avenir ....

Re: [..] Valeur de temps réelle

Posté : ven. 17 oct. 2008 22:30
par deviante
avec adlienable j'aurais toujours le meme type de problème non?

j'aurais des ""secondes"" à l'inverse plus courte au pire.... ce qui ne m'aide pas plus.

avec TimerInit() et TimerDiff() y a moyen de faire quelque chose?

Comme une fonction appelée à la fin de chaque boucle et qui incrémenterait la variable $timer du temps écoulé?

Ensuite pour mes tests dessus en utilisant la fonction Int() je dois retourner un entier ....

Re: [..] Valeur de temps réelle

Posté : ven. 17 oct. 2008 22:39
par sylvanie
deviante a écrit :avec adlienable j'aurais toujours le meme type de problème non?

j'aurais des ""secondes"" à l'inverse plus courte au pire.... ce qui ne m'aide pas plus.
Non, je dirais que tu as une chance d'avoir des vraies secondes, sous réserve que le temps d'exécution de la fonction pointée par adlibenable est inférieur à 50ms
deviante a écrit : avec TimerInit() et TimerDiff() y a moyen de faire quelque chose?
mesurer 2 prises de temps.
deviante a écrit : Comme une fonction appelée à la fin de chaque boucle et qui incrémenterait la variable $timer du temps écoulé?

Ensuite pour mes tests dessus en utilisant la fonction Int() je dois retourner un entier ....
tu auras effectivement le temps écoulé lors de l'éxécution

Re: [..] Valeur de temps réelle

Posté : ven. 17 oct. 2008 23:47
par Tlem
deviante a écrit :j'étais aller voir le topic épinglé : à lire avant de poster pour voir ce genre de règles et je n'avais rien vu donc j'avais poster tel quel
Remarque tout à fait juste et erreur corrigée.
Je modifierais le lien : "Les règles du forum" pour le renvoyer directement dans le forum des règles et non sur le post originel).

Merci.

Re: [..] Valeur de temps réelle

Posté : ven. 17 oct. 2008 23:59
par deviante
Ok ben merci j'ai trouvé la solution j'utilise TimerInit() et TimerDiff() , et je récupére des valeures entieres avec init() ca ne m'oblige pas à changer tout monde code .
Je met mon sujet en résolu merci à tous :D