dans un petit programme en VB6 qui compte le
temps pendant nombre de clic de souris, je remarque
que le Timer de mon programme n'affiche pas la
m=EAme valeur qu'un vrai chrono...
exemple, je compte le temps pour 100 clics de
souris, avec un Timer (et son intervalle=3D10, en
centi=E9me de secondes donc)...
au bout de 100 clics, le Timer affiche un retard
sur le vrai chrono...exemple: apr=E9s 100 clics, le
timer affiche 3mn05s09' et le vrai chrono 2mn58s85'
ma question : comment am=E9liorer cela, quelque
soit la machine (PC) et le nbr de processus d=E9j=E0
lanc=E9s?
mes premi=E9res investigations m'ont amen=E9es
=E0 une "library" Thread.Priority que je n'ai pas
r=E9ussi =E0 mettre en oeuvre avec VB6, puis j'ai
vu que d'autres utilisaient l'horloge de windows
comme base de temps des secondes (via 'time')...
sinon existe-t-il d=E9j=E0 une "library" time permettant
de faire du chronom=E9trage pr=E9cis...o=F9 comment
faites-vous pour faire du chronom=E9trage pr=E9cis?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-marc
vede wrote:
Bonjour à tous,
Hello,
sinon existe-t-il déjà une "library" time permettant de faire du chronométrage précis...où comment faites-vous pour faire du chronométrage précis?
La FAQ VB est faite pour toi :-)
Voici:
Comment chronométrer mon programme ? Comment mesurer précisément le temps ? http://faq.vb.free.fr/index.php?question6
et aussi : Comment mesurer le temps d'exécution d'un code ou comment réaliser un "benchmark" ? http://faq.vb.free.fr/index.php?question8
Tu verras que ces 2 articles en plus de donner plusieurs exemples complets te donnent aussi de nombreuses explications ainsi que des liens vers d'autres références.
sinon existe-t-il déjà une "library" time permettant
de faire du chronométrage précis...où comment
faites-vous pour faire du chronométrage précis?
La FAQ VB est faite pour toi :-)
Voici:
Comment chronométrer mon programme ?
Comment mesurer précisément le temps ?
http://faq.vb.free.fr/index.php?question6
et aussi :
Comment mesurer le temps d'exécution d'un code
ou comment réaliser un "benchmark" ?
http://faq.vb.free.fr/index.php?question8
Tu verras que ces 2 articles en plus de donner plusieurs
exemples complets te donnent aussi de nombreuses explications
ainsi que des liens vers d'autres références.
sinon existe-t-il déjà une "library" time permettant de faire du chronométrage précis...où comment faites-vous pour faire du chronométrage précis?
La FAQ VB est faite pour toi :-)
Voici:
Comment chronométrer mon programme ? Comment mesurer précisément le temps ? http://faq.vb.free.fr/index.php?question6
et aussi : Comment mesurer le temps d'exécution d'un code ou comment réaliser un "benchmark" ? http://faq.vb.free.fr/index.php?question8
Tu verras que ces 2 articles en plus de donner plusieurs exemples complets te donnent aussi de nombreuses explications ainsi que des liens vers d'autres références.
En complément, tu indiques que tu mets 10, ben si tu mets 10, ce n'est pas 10/100eme mais 10/1000eme, ah...
Sinon, selon le nombre d'accès à ton processeur et autres, par les programmes, et notamment les résidents (il faut mettre le minimum de résidents), ça prend une partie de temps incompressible, y compris les accès mécaniques éventuels, et donc descendre en dessous de ce temps fait que le Timer n'a pas le temps (c'est le cas de le dire, de mesurer correctement), car il ne prend le temps que quand il a la main (même si c'est une tâche prioritaire, ce que je ne sais pas), alors si le système lui refile la main toutes les deux secondes, et que toi tu lui demandes par exemple d'afficher chaque seconde, évidemment il aura du mal !
Par habitude, je dirais qu'en dessous de 100 ms, c'est quasiment vain d'obtenir le temps réel, à mon sens il faut étalonner le Timer selon la machine, ceci en le faisant par exemple tourner à vide et écrire dans une liste le plus vite possible en le mettant à 1/10000eme, ensuite il suffit d'aller lire les intervalles et de régler avec une petite marge le Timer en conséquence, on ne peut descendre en dessous de façon fiable, évidemment c'est relatif, si tu lances un programme ensuite, durant le travail du Timer, ça risque de fausser le comptage du temps, et mettre un second Timer pour étalonner le premier en permanence, je ne sais pas si ce n'est pas contreproductif, à voir... Ou peut être mieux, lire une tâche pour étalonner avec les API tu as la lecture en 1/1000eme du temps écoulé depuis le lancement de la machine, et ipso facto tu verra que dans la liste il est loin de t'afficher tous les millièmes !
"vede" a écrit dans le message de news: Bonjour à tous,
dans un petit programme en VB6 qui compte le temps pendant nombre de clic de souris, je remarque que le Timer de mon programme n'affiche pas la même valeur qu'un vrai chrono...
exemple, je compte le temps pour 100 clics de souris, avec un Timer (et son intervalle, en centiéme de secondes donc)...
au bout de 100 clics, le Timer affiche un retard sur le vrai chrono...exemple: aprés 100 clics, le timer affiche 3mn05s09' et le vrai chrono 2mn58s85'
ma question : comment améliorer cela, quelque soit la machine (PC) et le nbr de processus déjà lancés?
mes premiéres investigations m'ont amenées à une "library" Thread.Priority que je n'ai pas réussi à mettre en oeuvre avec VB6, puis j'ai vu que d'autres utilisaient l'horloge de windows comme base de temps des secondes (via 'time')...
sinon existe-t-il déjà une "library" time permettant de faire du chronométrage précis...où comment faites-vous pour faire du chronométrage précis?
merci d'avance pour vos infos, vede :O]
Bonjour,
En complément, tu indiques que tu mets 10, ben si tu mets 10, ce n'est
pas 10/100eme mais 10/1000eme, ah...
Sinon, selon le nombre d'accès à ton processeur et autres, par les
programmes, et notamment les résidents (il faut mettre le minimum de
résidents), ça prend une partie de temps incompressible, y compris les accès
mécaniques éventuels, et donc descendre en dessous de ce temps fait que le
Timer n'a pas le temps (c'est le cas de le dire, de mesurer correctement),
car il ne prend le temps que quand il a la main (même si c'est une tâche
prioritaire, ce que je ne sais pas), alors si le système lui refile la main
toutes les deux secondes, et que toi tu lui demandes par exemple d'afficher
chaque seconde, évidemment il aura du mal !
Par habitude, je dirais qu'en dessous de 100 ms, c'est quasiment vain
d'obtenir le temps réel, à mon sens il faut étalonner le Timer selon la
machine, ceci en le faisant par exemple tourner à vide et écrire dans une
liste le plus vite possible en le mettant à 1/10000eme, ensuite il suffit
d'aller lire les intervalles et de régler avec une petite marge le Timer en
conséquence, on ne peut descendre en dessous de façon fiable, évidemment
c'est relatif, si tu lances un programme ensuite, durant le travail du
Timer, ça risque de fausser le comptage du temps, et mettre un second Timer
pour étalonner le premier en permanence, je ne sais pas si ce n'est pas
contreproductif, à voir...
Ou peut être mieux, lire une tâche pour étalonner avec les API tu as la
lecture en 1/1000eme du temps écoulé depuis le lancement de la machine, et
ipso facto tu verra que dans la liste il est loin de t'afficher tous les
millièmes !
"vede" <vede31@gmail.com> a écrit dans le message de
news:1cfb3ffa-2b07-4697-b40d-84f70c26de68@k30g2000yqf.googlegroups.com...
Bonjour à tous,
dans un petit programme en VB6 qui compte le
temps pendant nombre de clic de souris, je remarque
que le Timer de mon programme n'affiche pas la
même valeur qu'un vrai chrono...
exemple, je compte le temps pour 100 clics de
souris, avec un Timer (et son intervalle, en
centiéme de secondes donc)...
au bout de 100 clics, le Timer affiche un retard
sur le vrai chrono...exemple: aprés 100 clics, le
timer affiche 3mn05s09' et le vrai chrono 2mn58s85'
ma question : comment améliorer cela, quelque
soit la machine (PC) et le nbr de processus déjà
lancés?
mes premiéres investigations m'ont amenées
à une "library" Thread.Priority que je n'ai pas
réussi à mettre en oeuvre avec VB6, puis j'ai
vu que d'autres utilisaient l'horloge de windows
comme base de temps des secondes (via 'time')...
sinon existe-t-il déjà une "library" time permettant
de faire du chronométrage précis...où comment
faites-vous pour faire du chronométrage précis?
En complément, tu indiques que tu mets 10, ben si tu mets 10, ce n'est pas 10/100eme mais 10/1000eme, ah...
Sinon, selon le nombre d'accès à ton processeur et autres, par les programmes, et notamment les résidents (il faut mettre le minimum de résidents), ça prend une partie de temps incompressible, y compris les accès mécaniques éventuels, et donc descendre en dessous de ce temps fait que le Timer n'a pas le temps (c'est le cas de le dire, de mesurer correctement), car il ne prend le temps que quand il a la main (même si c'est une tâche prioritaire, ce que je ne sais pas), alors si le système lui refile la main toutes les deux secondes, et que toi tu lui demandes par exemple d'afficher chaque seconde, évidemment il aura du mal !
Par habitude, je dirais qu'en dessous de 100 ms, c'est quasiment vain d'obtenir le temps réel, à mon sens il faut étalonner le Timer selon la machine, ceci en le faisant par exemple tourner à vide et écrire dans une liste le plus vite possible en le mettant à 1/10000eme, ensuite il suffit d'aller lire les intervalles et de régler avec une petite marge le Timer en conséquence, on ne peut descendre en dessous de façon fiable, évidemment c'est relatif, si tu lances un programme ensuite, durant le travail du Timer, ça risque de fausser le comptage du temps, et mettre un second Timer pour étalonner le premier en permanence, je ne sais pas si ce n'est pas contreproductif, à voir... Ou peut être mieux, lire une tâche pour étalonner avec les API tu as la lecture en 1/1000eme du temps écoulé depuis le lancement de la machine, et ipso facto tu verra que dans la liste il est loin de t'afficher tous les millièmes !
"vede" a écrit dans le message de news: Bonjour à tous,
dans un petit programme en VB6 qui compte le temps pendant nombre de clic de souris, je remarque que le Timer de mon programme n'affiche pas la même valeur qu'un vrai chrono...
exemple, je compte le temps pour 100 clics de souris, avec un Timer (et son intervalle, en centiéme de secondes donc)...
au bout de 100 clics, le Timer affiche un retard sur le vrai chrono...exemple: aprés 100 clics, le timer affiche 3mn05s09' et le vrai chrono 2mn58s85'
ma question : comment améliorer cela, quelque soit la machine (PC) et le nbr de processus déjà lancés?
mes premiéres investigations m'ont amenées à une "library" Thread.Priority que je n'ai pas réussi à mettre en oeuvre avec VB6, puis j'ai vu que d'autres utilisaient l'horloge de windows comme base de temps des secondes (via 'time')...
sinon existe-t-il déjà une "library" time permettant de faire du chronométrage précis...où comment faites-vous pour faire du chronométrage précis?
merci d'avance pour vos infos, vede :O]
Frédéric Van der Beken
Du temps de win 98 (peut être encore d'actualité), l'horloge n'était lue que 18.4 fois par seconde soit 0.0556 s l'incrément minimum si on se contente d'afficher l'heure. J'avais fouillé pour une appli qui devait partager le temps sur plusieurs fenêtres, chacune gérant un terminal connecté.
-- ================================================== Frédéric Van der Beken
VEDEX 8, rue de la Féculerie Z.I. les Cailloux 45150 JARGEAU FRANCE Depuis la France Tel: 02 38 46 11 65 Fax: 02 38 46 19 35 Since the foreigner Phone: +33 2 38 46 11 65 Fax: +33 2 38 46 19 35 Sites/website: www.vedex.com www.pointeuse.fr www.pointeuses.net www.nadsoftware.com E-mail: {EnlevezMoiPourRepondre}
Du temps de win 98 (peut être encore d'actualité), l'horloge n'était lue que
18.4 fois par seconde soit 0.0556 s l'incrément minimum si on se contente
d'afficher l'heure. J'avais fouillé pour une appli qui devait partager le
temps sur plusieurs fenêtres, chacune gérant un terminal connecté.
--
================================================== Frédéric Van der Beken
VEDEX
8, rue de la Féculerie
Z.I. les Cailloux
45150 JARGEAU
FRANCE
Depuis la France Tel: 02 38 46 11 65 Fax: 02 38 46 19 35
Since the foreigner Phone: +33 2 38 46 11 65 Fax: +33 2 38 46 19 35
Sites/website: www.vedex.com www.pointeuse.fr www.pointeuses.net
www.nadsoftware.com
E-mail: {EnlevezMoiPourRepondre}support@vedex.com
Du temps de win 98 (peut être encore d'actualité), l'horloge n'était lue que 18.4 fois par seconde soit 0.0556 s l'incrément minimum si on se contente d'afficher l'heure. J'avais fouillé pour une appli qui devait partager le temps sur plusieurs fenêtres, chacune gérant un terminal connecté.
-- ================================================== Frédéric Van der Beken
VEDEX 8, rue de la Féculerie Z.I. les Cailloux 45150 JARGEAU FRANCE Depuis la France Tel: 02 38 46 11 65 Fax: 02 38 46 19 35 Since the foreigner Phone: +33 2 38 46 11 65 Fax: +33 2 38 46 19 35 Sites/website: www.vedex.com www.pointeuse.fr www.pointeuses.net www.nadsoftware.com E-mail: {EnlevezMoiPourRepondre}
Oui, c'est la cadence du quartz pour le processeur, mais je ne sais pas si ça a changé, car désormais il y a parfois un nombre affolant de programmes résidents, et si seulement 18 peuvent y aller par seconde, disons que ça limite un temps de réponse raisonnable à 40 processus, or je ne suis ps certain qu'il n'y en ait pas davantage parfois ?
Oui, c'est la cadence du quartz pour le processeur, mais je ne sais pas si
ça a changé, car désormais il y a parfois un nombre affolant de programmes
résidents, et si seulement 18 peuvent y aller par seconde, disons que ça
limite un temps de réponse raisonnable à 40 processus, or je ne suis ps
certain qu'il n'y en ait pas davantage parfois ?
Oui, c'est la cadence du quartz pour le processeur, mais je ne sais pas si ça a changé, car désormais il y a parfois un nombre affolant de programmes résidents, et si seulement 18 peuvent y aller par seconde, disons que ça limite un temps de réponse raisonnable à 40 processus, or je ne suis ps certain qu'il n'y en ait pas davantage parfois ?
Oui, c'est la cadence du quartz pour le processeur, mais je ne sais pas s i ça a changé, car désormais il y a parfois un nombre affolant de pro grammes résidents, et si seulement 18 peuvent y aller par seconde, disons que ça limite un temps de réponse raisonnable à 40 processus, or je ne suis ps certain qu'il n'y en ait pas davantage parfois ?
et merci beaucoup pour toutes vos infos et précisions... j'utilise finalement un appel à l'heure systéme "Time" 100 fois/secondes, qui detecte si une seconde systeme s'est écoulée...
init: dim oldtime oldtime=Time
prog: if oldtime<>Time then seconde=seconde+1 end if
vede ;O]
On 16 juil, 11:34, "LE TROLL" <le tr...@enfer.fr> wrote:
Bonjou,
Oui, c'est la cadence du quartz pour le processeur, mais je ne sais pas s i
ça a changé, car désormais il y a parfois un nombre affolant de pro grammes
résidents, et si seulement 18 peuvent y aller par seconde, disons que ça
limite un temps de réponse raisonnable à 40 processus, or je ne suis ps
certain qu'il n'y en ait pas davantage parfois ?
et merci beaucoup pour toutes vos infos et précisions...
j'utilise finalement un appel à l'heure systéme "Time"
100 fois/secondes, qui detecte si une seconde systeme
s'est écoulée...
init:
dim oldtime
oldtime=Time
prog:
if oldtime<>Time then
seconde=seconde+1
end if
Oui, c'est la cadence du quartz pour le processeur, mais je ne sais pas s i ça a changé, car désormais il y a parfois un nombre affolant de pro grammes résidents, et si seulement 18 peuvent y aller par seconde, disons que ça limite un temps de réponse raisonnable à 40 processus, or je ne suis ps certain qu'il n'y en ait pas davantage parfois ?
et merci beaucoup pour toutes vos infos et précisions... j'utilise finalement un appel à l'heure systéme "Time" 100 fois/secondes, qui detecte si une seconde systeme s'est écoulée...
init: dim oldtime oldtime=Time
prog: if oldtime<>Time then seconde=seconde+1 end if