Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la
charte
sera déplacé, modifié, ou supprimé par nos
modérateurs
.
Forum Langages
»
BASIC
»
Temps d'exécution
arn0691
ProgBoarder
Windows XP
Safari - Posté le 07/01/2011 à 13:43
Bonjour à tous.
Je cherche le moyen de mesurer le temps d'exécution en quick basic.
Par exemple sur une boucle du genre for i = 1 to 20000: next i
Les essais, avec le timer, montrent un manque de précision.
Selon le moment de lancement d'un petit bout de programme dans l'environnement de quick basiq, on obtient 0.
EX:
CLS
k% = 1
DO
start# = TIMER
LOCATE k%, 1
PRINT "start = "; start#
FOR i! = 1 TO 20000
NEXT i!
fin# = TIMER
LOCATE k%, 55
PRINT "fin# = "; fin#
tamps# = fin# - start#
PRINT "temps = "; tamps#;
LOCATE k%, 30
PRINT "nbr boucles = "; i!
k% = k% + 2
IF k% = 41 THEN END
LOOP UNTIL INKEY$ <> ""
Explication :
Proc = P4 3,2C fonctionnant à 3,36 Ghz
OS = XP pro sp3
Quick basic V4.5 (Attention écran sur 50 lignes).;)
Le timer compte des pulses issues d'une division d'un registre 16 bits sur 3600 secondes -->> 65536 / 3600 =~18.2
résolution 1/18.2 = 0.054945.
Le code à exécuter (la boucle for i..) est "stockée" dans le cache du proc de sorte que cette boucle est faite plus vite que le temps entre 2 pulses du timer. et on obtient donc 0.
Quelqu'un a-t-il une idée pour faire une mesure fiable.
Je sais que le kernel de windows gère les centièmes de seconde, mais je ne connais pas la technique qui me permettrai de chercher cette information.
Merci de vos réponses, et j'espère que j'ai été clair !;)
Edité par arn0691 ( 07/01/2011 13:57:41 )
neliger
Geek
MacOS
Safari - Posté le 07/01/2011 à 14:11
Je n'ai pas pratiqué le QBasic depuis bien trop longtemps, mais à l'époque je faisait ceci pour une pause précise :
http://www.progboards.com/sujet-1595_un_systeme_de_pause_precise.php
Comme je précisait pouvoir le définir à la miliseconde près, cela devrait t'intéresser, j'utilise sans doute un autre type de variable que toi.
Change la caféine en lignes de code, et aurait parfois besoin de l'inverse.
arn0691
ProgBoarder
Windows XP
Safari - Posté le 07/01/2011 à 16:04
Merci de ta réponse Neliger, mais cela ne correspond pas à mon problème, et aussi, je vais rectifier une idée reçue!
J'expose dans mon explication que le timer ne peut pas être sollicité pour une résolution inférieure à 0.055 seconde soit 55 milliseconde.
Cette technique permet de s'affranchir du type de machine et du processeur si le but rechercher est d'ordre supérieur à 0.1 seconde.
Mais il n'y a pas de réponse pour des éléments dont la redondance est inférieure au cadencement du timer.
Avec l'exemple que j'ai donné, et quelques variantes, j'ai pu mettre en évidence qu'entre 2 accès au timer (sur des boucles de 25000 points), le delta va de 0.046875 à 0.0625 en passant par 0.05859375 ect..
Les différences s'expliquent par un temps d'exécution par rapport aux accès au timer puisqu'ils ne sont pas synchronisés.
Pour conclure, rien ne donne une bonne valeur si c'est inférieur ou très inférieur à 0.055 second.
neliger
Geek
MacOS
Safari - Posté le 09/01/2011 à 16:26
Je ne pense pas que tu auras plus précis en QBasic.
Garde également en tête que les processeurs x86 ne sont pas synchrones, et que les différentes couches logicielles augmentent encore l'approximation d'exécution, la précision sera donc toujours variable, quelque soit la méthode utilisée.
Change la caféine en lignes de code, et aurait parfois besoin de l'inverse.
Poster une réponse
Message
Formatage
Note: pour partager du code source, merci d'utiliser le
wall
!
Smileys
Pseudonyme
Recopiez le code
v6 ©
Computaid SPRL
2005-2012 - Tous droits réservés -
Hébergé par eTigris
- Page générée en 0,027 s -
Crédits
-
Stats
Forums
ProgBoards » Annonces
ProgBoards » Développement
ProgBoards » Café
ProgBoards » Petites annonces
Informatique » Algorithmes
Informatique » Logiciel
Informatique » Matériel
Informatique » Graphisme
Informatique » Sécurité
Langages » BASIC
Langages » Pascal / Delphi
Langages » C & Cie.
Langages » Assembleur
Langages » Java
Langages » Autres Langages
Langages » Bibliothèques
Web » HTML / XML
Web » PHP / ASP
Web » Flash & Autres
Groupes de travail » FlexProject
Groupes de travail » Kovu (Bot IRC)
Groupes de travail » PHPMonitoring
Groupes de travail » ChrisLib
Groupes de travail » SDLWindow
Documentation » Linux / Unix
Documentation » ProgBoards
Documentation » QBasic
Documentation » C & Cie.
Ecologie » Solaire
Ecologie » Transport
Liste des forums
Membres
Inscrivez-vous
Mot de passe perdu?
Liste des membres
Groupes
Liste des groupes
Projets
Liste des projets
Logithèque
Les logiciels libres
Outils
Wall (codes sources)
Timestamp Unix
Interrogation whois
Goodies
T'chat IRC
Quotes IRC
1
Web analytics