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

Langage Delphi Discussion :

Calculer le temps d'execution


Sujet :

Langage Delphi

  1. #1
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut Calculer le temps d'execution
    Salam
    j'ai un programme qui fait des calcul sur des matrices, et je veux connaitre le temps d'execution en secondes ou mili secondes!
    ce programme est lancé par un bouton!
    comment faire?

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Utilise GetTickCount
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Lancement:=GetTickCount;
    //TonTraitement
    Duree:=GetTickCount-Lancement; //Le tout en millisecondes
    Voila
    N'oublie pas le tag [Résolu]

  3. #3
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    plein de post existe deja la dessus et les faq y repondent !!!

    voici des leins :

    http://c.developpez.com/faq/c/?page=divers
    http://vb.developpez.com/faq/?page=Routines#tps_exec

    je te conseille d'ailleurs le 2ieme lien..., j'utilise moi meme cette fonction en C++ et tu as juste a faire une soustraction!!!


  4. #4
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    merci je vais les essayer et je vous donnerai une réponse!

  5. #5
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    ca marche, c'est sur!!! tester et approuver!!!

  6. #6
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    voici le code que j'ai utilisé
    var lancement,duree: byte; // car en integer ça n'a rien donné
    begin
    Lancement:=GetTickCount;
    .....
    ....
    ....
    Duree:=GetTickCount-Lancement; //Le tout en millisecondes
    showmessage(inttostr(duree)+' millisecondes');
    end;
    quand j'ai déclaré les deux variable de type integer, ça n'a rien donné, et quand je les ai déclaré de type Byte, il m'a donné la prmeière fois 16miliisecondes ensuite il ne m'a rien donné que 0 millisecondes pour les autres executions ?

  7. #7
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    pourtant, tu n'as que ca a faire... et le chrono est sur.

    par contre, moi, ca marche en int (je travail en c++ pour cette utilisation)

  8. #8
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    ce qu'il me donne comme résultat n'est pas rassurant car pour le meme example, il me donne des fois des chiffres >0 et les autres fois des 000

  9. #9
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    essaye avec un long...

  10. #10
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    j'ai essayé de les déclarer long avant Byte, il ne l'accepte pas!

  11. #11
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    salut,
    heu je veux pas dire mais gettickcount renvoi un cardinal


  12. #12
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par HumanTool
    heu je veux pas dire mais gettickcount renvoi un cardinal
    je m'excuse, mais c'est quoi un cardinal et quel effet ça engendre sur la solution que je cherche ?

  13. #13
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    une valeur entière peut être de plusieurs type en delphi : byte, integer, short, etc (cherche dans l'aide de delphi "types entiers" pour plus de details)
    Cardinal représente une valeur entière positive stoquée sur 4 octets (32 bits) allant de 0 à 4 294 967 296 (2 puissance 32) ; il est différent du longint qui lui peut être négatif
    pour en revenir à ton problème, tu dois déclarer tes variables lancement et durée de type Cardinal

  14. #14
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Points : 255
    Points
    255
    Par défaut
    cardinal est un type d'entiers comme par exemple integer, byte ...
    cardinal est sur 64 bits je crois (ou 32 ) ... donc très gros
    Regarde dans l'aide pour + d'info sur ce type.

    EDIT : trop tard ...

  15. #15
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 673
    Points : 7 054
    Points
    7 054
    Par défaut
    Citation Envoyé par smail21
    ce qu'il me donne comme résultat n'est pas rassurant car pour le meme example, il me donne des fois des chiffres >0 et les autres fois des 000
    Pour moi, c'est pas anormal.
    J'ai déjà fais ça pour voir le temps de chargement de plusieurs images. Le temps est rarement le même. Je suppose que ça dépend de la charge du procésseur à ce moment.

  16. #16
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 875
    Points : 11 363
    Points
    11 363
    Billets dans le blog
    6
    Par défaut
    il me semble avoir lu que pour les traitements courts, la fonction n'était pas performante et donnait parfois 16 ms à considérer comme #0...

    tu as intérêt à mesurer une répétition de n fois le traitement, pour avoir une durée qui s'affranchira des petites incertitudes quand elles sont du même ordre que ce que tu veux mesurer.

  17. #17
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Un "tickcount" vaut environ 18 millisecond, et comme apparament le traitement prend moins de temps que çà on retrouve soit 0 soit 1 suivant qu'on est resté ou non dans le même tick.

    Pour mieux évaluer le temps, il faudrait un mode de debug avec une boucle qui effectue 100 fois le traitement.

  18. #18
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    moi ausis je pense que ça dépend des performances du microprocesseur!
    car j'ai changé le type des variables de byte à Cardinal, ça me donne des fois 800 MS pour un traitement long et des fois 1230 ms pour le même traitement(exemple).
    je vais essayer de multiplier cette durée par 100 et voir
    je vous donnerai des nouvelles

  19. #19
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 504
    Points : 2 776
    Points
    2 776
    Billets dans le blog
    10
    Par défaut
    N'oublie pas d'ajouter

    application.processMessages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
      i1 :integer ;
      d1 double ;
    begin
      i1 := 0 ;
      d1 = double(now)) ;
      application.processMessages ;
      .....
      i1 :=(round((double(now)- d1))*86400*1000)) ;
      showmessage(inttostr(i1)+' millisecondes');

  20. #20
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    ça ne donne encore rien
    bon j'abandonne puisque ça ne peut pas me donner un temps réel, puisque ce temps dépends de la disponibilité des ressources systèmes
    merci à tous

Discussions similaires

  1. Calculer le temps d'execution d'un code
    Par siham-gh dans le forum Débuter
    Réponses: 8
    Dernier message: 10/05/2012, 14h04
  2. Calcul du temps d'execution..
    Par SPKlls dans le forum Zend Framework
    Réponses: 1
    Dernier message: 02/12/2008, 15h04
  3. calculer le temps d'execution
    Par Montor dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/05/2008, 12h21
  4. Calcul du temps d'execution en millisecondes
    Par Yakurena dans le forum C++
    Réponses: 2
    Dernier message: 18/04/2007, 01h45
  5. comment calculer le temps d'execution
    Par passion_info dans le forum C++Builder
    Réponses: 1
    Dernier message: 09/06/2005, 09h13

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