Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

Comment chronométrer une fonction


Sujet :

Pascal

  1. #1
    Nouveau Candidat au Club
    Comment chronométrer une fonction
    Bonsoir,

    je réalise un petit prog pour comparer (en testant et chronométrant) les différentes méthodes de tri dans un tableau. Chaque méthode est sous la forme d'une fonction.

    Comment est-ce que je peux chronométrer le temps que chacune d'elle met ?

    Merci d'avance

    EZ
    vive le waterzooi!

  2. #2
    Membre expert
    Salut !

    Tout va dépendre de la précision dont tu as besoin. Si tu veux une comparaison "grossière", regarder l'horloge système sera amplement suffisant. Elle est mise à jour 18.2 fois par seconde. Pour s'en servir, il faut déclarer une variable de type Longint placée à l'adresse $0040:$006C (avec absolute), comme ceci :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var
      SysClock: Longint absolute $0040:$006C;
      C1, C2: Longint;
     
    begin
    ...
    C1 := SysClock;
    ...
    C2 := SysClock;
    ...
    WriteLn('Temps écoulé : ' C2 - C1);
    end.


    Attention toutefois au passage fatidique à minuit ! En effet, l'horloge système comptabilise le nombre de ticks depuis minuit. Donc tu risques d'avoir des temps négatifs si tu débutes ton prog avant minuit, et qu'il se termine après.

    Si la précision nécessaire est plus importante, tu peux te servir de l'unité Dos et de la procédure GetTime, qui te donnera des centièmes de seconde.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    uses
      Dos;
     
    var
      H, M, S, S100: Word;
      C1, C2: Longint;
     
    begin
    ...
    GetTime(H, M, S, S100);
    C1 := H * 60 * 6000 + M * 6000 + S * 100 + S100;
    ...
    GetTime(H, M, S, S100);
    C2 := H * 60 * 6000 + M * 6000 + S * 100 + S100;
    ...
    WriteLn('Temps écoulé : ', C2 - C1);


    Il existe une méthode encore plus précise. Si elle t'intéresse, dis-le. Elle nécessite un peu plus de pratique et de connaissances peut-être pour la comprendre.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  3. #3
    Nouveau Candidat au Club
    ces deux premières méthodes suffiront amplement.

    merci pour ton aide si rapide et efficace!

    EZ
    vive le waterzooi!

  4. #4
    Candidat au Club
    J'ai explorer les deux méthode présentée ci dessus mais j'aurais besoins de pouvoir gérer du temps à la miliseconde près (ou en du cas > au centième de seconde).
    Merci

###raw>template_hook.ano_emploi###