Temp d'execution sur pascal

Fermé
nadal1991 Messages postés 268 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 2 octobre 2011 - 27 août 2008 à 13:37
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 - 30 août 2008 à 12:12
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
A voir également:

6 réponses

KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
27 août 2008 à 15:18
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
nadal1991 Messages postés 268 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 2 octobre 2011 11
27 août 2008 à 14:59
une reponse silvouplait
-1
nadal1991 Messages postés 268 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 2 octobre 2011 11
27 août 2008 à 17:20
oui merci pour l'astuce meme si ca serai bien qu'il est une instruction direct et rapide
-1
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
27 août 2008 à 18:14
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nadal1991 Messages postés 268 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 2 octobre 2011 11
29 août 2008 à 12:33
merci beaucoup evidament c beaucoup mieu , je vais essayer ca

meci
-1
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
30 août 2008 à 12:12
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