IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Turbo Pascal Discussion :

[TP] Mémoire utilisée par un programme


Sujet :

Turbo Pascal

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut [TP] Mémoire utilisée par un programme
    bonjour je voulais savoir s'il etais possible de connaitre l'espace memoire utilisé par une procedure ou fonction en turbo pascal, et sa durée d'execution ..je m'explique par example j'ai ceci:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    program test;
    var i,j:integer;
     c:char;
     car,car:string;
     
    begin
    write('entrez votre texte');
    repeat
    c:=readkey;
    car:=car+c;
    clrscr;
    write(car);
    j:=j+1;
    until c=#13;
     
    for i:=1 to j-1 do begin
          ca2:=car2+car[i ];
    end;
     
    textcolor(12);
    for i:=1 to j-1 do begin
    write(car2[i]);
    delay(150);
    end;
    readln
    end.


    voila un petit example de code...maintenant comment je peux faire pour connaitre le temps d'execution de ce code et l'espace memoire qu'il a utilisé..
    merci

  2. #2
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Bonjour,

    La mémoire réservée à un programme Turbo Pascal est spécifiée par la directive de compilation $M. On peut ausi la définir dans les options.

    Le programme prendra quoiqu'il arrive cette espace mémoire, qu'il soit effectivement utilisé ou non. Au maximum, il utilisera 640 Ko de mémoire.

    Pour évaluer la mémoire dynamique utilisée par un programme, il est possible de récupérer l'espace mémoire libre au démarrage du programme (avec MemAvail) et de surcharger les procédures GetMem et FreeMem pour voir dynamiquement quelle quantité de mémoire est utilisée.


    Concernant le temps d'exécution, il suffit de récupérer l'heure avant le traitement et de la récupérer à la fin du traitement. Une simple soustraction donne alors le résultat. Pour lire l'heure, on peut s'appuyer sur GetTime (unité Dos), et on aura une précision de l'ordre du centième de seconde, ou bien regarder la valeur de l'horlogie système à l'adresse $0040:$006C, et on aura une précision de l'ordre du 1/18ème de seconde.
    On peut également aller plus loin en redéfinissant la fréquence du timer système, donnant alors une précision maximale de 1/$1234DDème de seconde soit 83 µs.
    Attention toutefois sous Windows, le timer ne peut être redéfini avec une précision inférieure à 1 ms.

    Voir mon unité Timer au besoin : http://pascail.developpez.com/utilitaires/?unite=timer

    @++

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    Attention tout de même! redéfinir le diviseur de l'horloge interne ( qui est $FFFF par défaut ) marche très bien et permet de faire des tas d'applications du genre acquisition jusqu'à quelques 10kHz).
    Toutefois, des interruptions comme $1C sont "trigués" par cette clock et cela peut
    1- conduire à des ré-entrances d'interruption => crach immédiat du système.
    Les limitent dépendent de la vitesse du PC et de l redéfinition des vecteurs d'interruption
    2- une perte de l'heure et de la date du PC. Cela implique une correction au retour à 18.206.482..Hz = 1193181.667 / $FFFF. Cela peut se faire en comptant le nombre de coup de clock à la fréquence modifiée et en calculant celle que l’on aurait du avoir à 18.206.. Hz

    La redéfinition de cette horloge est « quantifiée ». En fait l’horloge est à une fréquence
    1193181.667 / n n entier non signe 1..FFFF. c’est n que l’on peut redéfinir

    une routine comme celle-ci le fait


    const TicsPerSec : single = 18.206482;
    max_clk : single = 1193181.667; { #1.2M <> ticks / day # 1.5M }
    var p1c_itel : word;
    procedure init_1c( Freq : single );
    Begin
    if freq < 18.25 then
    freq:=18.25;
    p1c_itel:=round(max_clk / freq);
    inline($FA);
    port[$43]:=$36;
    port[$40]:=lo(p1c_ITel);
    port[$40]:=hi(p1c_ITel);
    inline($fb)
    End;
    Un autre problème si on dépasse 49.--- kHz, ceci depuis 0h00 est que le compteur de l'horloge localisé à $40:$6C ne pouvant pas dépasser $FFFFFFFF
    peut retomber à 0 avec les problèmes potentiels liés à cette décrémentation!

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    je vous remercie sincerement vous venez d'aprofondir mes connaissances....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. memoire utilisee par un programme
    Par mathher dans le forum C++
    Réponses: 5
    Dernier message: 20/04/2006, 10h55
  2. Trouver le nombre de handle utiliser par un programme
    Par chuckboy dans le forum Windows
    Réponses: 1
    Dernier message: 19/12/2005, 23h38
  3. Lister les classes utilisées par un programme
    Par seawolfm dans le forum Général Java
    Réponses: 3
    Dernier message: 11/10/2005, 13h18
  4. Réponses: 3
    Dernier message: 28/06/2005, 09h07
  5. Réponses: 2
    Dernier message: 05/12/2003, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo