Temp d'execution sur pascal

Bonjour,
voila je suis encore dans la programation pascal et je voudrait savoir si quelqu'un connait une instruction ou une astuce afin d'afficher le temp d'execution du programme (pascal ) ,

merci de m'informer
Configuration: Windows XP
Firefox 3.0.1voi

6 réponses

  1. Modérateur
    Voici une astuce pour faire ce que tu veux :
    Il s'agit en fait de lire les heures de début et de fin du programme puis de les comparer...
    program SansNom; uses Dos;
    
    var h1,m1,s1,c1,h2,m2,s2,c2:word;
    begin
    GetTime(h1,m1,s1,c1);
    {
           Contenu du  programme
    }
    GetTime(h2,m2,s2,c2);
    
    writeln; write('Fin du programme. Temps d''execution : ');
    if h2<h1 then write(((24+h2-h1)*3600+(m2-m1)*60+(s2-s1)+real(c2-c1)/100):0:2)
             else write(((h2-h1)*3600+(m2-m1)*60+(s2-s1)+real(c2-c1)/100):0:2);
    write(' secondes'); readln;
    end.
    1
    1. une reponse silvouplait
      -1
      1. oui merci pour l'astuce meme si ca serai bien qu'il est une instruction direct et rapide
        -1
        1. Modérateur
          Sinon on peut créer une unité "Time" ton programme final ne ressemblera alors plus qu'à cela :
          program SansNom; uses Time;
          
          begin
          {
               Contenu du Programme
          }
          end.
          Il faut pour cela compiler l'unité suivante appelée Time dans C:\Dev-Pas\Units\Time.pas ou équivalent selon l'interface Pascal que tu utilises...
          unit Time;
          
          interface
          
          implementation
          
          uses dos;
          
          type ProcType = procedure;
          
          var OldProc: ProcType;
              r1:real;
          
          function RealOfGetTime:real;
          var h,m,s,c:word;
          begin
             GetTime(h,m,s,c);
             result:=h*3600+m*60+s+real(c)/100;
          end;
          
          procedure ToDoAtExit;
          var f: text; r,r2:real;
          begin
             Exitproc := OldProc;
             r2:=RealOfGetTime;
             r:=r2-r1;
             if r<0 then r:=r+24*3600;
             writeln;
             write('Fin du programme. Temps d''execution : ',r:0:2,' secondes');
             assign(f, 'CON'); reset(f); readln(f);
          end;
          
          procedure Install_ExitProc;
          begin
             OldProc := ProcType(ExitProc);
             ExitProc := @ToDoAtExit;
          end;
          
          begin
             r1:=RealOfGetTime;
             Install_ExitProc;
          end.
          -1
          1. merci beaucoup evidament c beaucoup mieu , je vais essayer ca

            meci
            -1
            1. Modérateur
              Tel que je l'ai écrit, si le programme plante, il affiche quand même "Fin du programme."
              Voici une petite correction pour que dans ce cas il affiche "Erreur ---."

              Dans ToDoAtExit, il faut remplacer :
                 write('Fin du programme. Temps d''execution : ',r:0:2,' secondes');
              par
                 if ErrorAddr=nil then write('Fin du programme')
                                  else write('Erreur ',ExitCode);
                 write('. Temps d''execution : ',r:0:2,' secondes');
              Dans tous les cas, le temps d'exécution sera affiché à la fin...
              -1