Temp d'execution sur pascal

nadal1991 Messages postés 280 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  2. nadal1991 Messages postés 280 Statut Membre 11
     
    une reponse silvouplait
    -1
  3. nadal1991 Messages postés 280 Statut Membre 11
     
    oui merci pour l'astuce meme si ca serai bien qu'il est une instruction direct et rapide
    -1
  4. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. nadal1991 Messages postés 280 Statut Membre 11
     
    merci beaucoup evidament c beaucoup mieu , je vais essayer ca

    meci
    -1
  7. KX Messages postés 19031 Statut Modérateur 3 020
     
    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