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

C++Builder Discussion :

Calcul pr�cis de temps sous RAD Studio 10.4


Sujet :

C++Builder

  1. #1
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut Calcul pr�cis de temps sous RAD Studio 10.4
    Bonjour � tous

    Je viens fraichement d'installer RAD Studio 10.4.1 et je rencontre quelques soucis de migration de projet.

    Faisant des logiciels qui calculent des temps de r�action, j'ai besoin de calculer le temps entre diff�rents �v�nements qui surviennent.

    Avant j'effectuais mes calculs de temps comme ceci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    static __int64 FrequenceHorloge, Debut, Fin;
     
    QueryPerformanceCounter((LARGE_INTEGER*)&Debut);
    QueryPerformanceCounter((LARGE_INTEGER*)&Fin);
     
    QueryPerformanceFrequency((LARGE_INTEGER*)&FrequenceHorloge);
     
    double Temps = (Fin - Debut) / (double)FrequenceHorloge;
    J'ai une erreur sur le type LARGE_INTEGER qui n'existe pas.

    Avez-vous une solution � me proposer car l'utilisation d'un TTimer n'est pas assez pr�cis.

    Merci d'avance pour votre aide.

  2. #2
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    D�cembre 2015
    Messages
    1 599
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : D�cembre 2015
    Messages : 1 599
    Par d�faut
    Bonjour,

    LARGE_INTEGER, �a correspond � __int64 ou � long long.

    As-tu essay� de tout simplement supprimer les cast (LARGE_INTEGER*)? Si une erreur se produit � la compilation elle indiquera le type attendu et donc le cast exact � effectuer.

  3. #3
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    bonsoir
    il vaut mieux utiliser les API Natives de MS
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    BOOL QueryPerformanceCounter(
      LARGE_INTEGER *lpPerformanceCount
    );
    Attention un LARGE_INTEGER ne correspond pas un type simple mais il s'agit d'une Union
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef union _LARGE_INTEGER {
      struct {
        DWORD LowPart;
        LONG  HighPart;
      } DUMMYSTRUCTNAME;
      struct {
        DWORD LowPart;
        LONG  HighPart;
      } u;
      LONGLONG QuadPart;
    } LARGE_INTEGER
    cette d�claration se trouve dans le fichier winnt.h

    le code suivant devrait fonctionner

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    LARGE_INTEGER Debut;
    LARGE_INTEGER fin;
    if (QueryPerformanceCounter(&Debut)
    {
     
    // ton traitement
     
    }
    Cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  4. #4
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    Merci � vous pour vos r�ponses.

    Je viens de me rendre compte que cela ne pourra pas fonctionner pour cette application car je dois �galement la porter sur Android et que c'est une API Windows.

    Je cherche donc un code pouvant fonctionner sur toutes les plateformes.

    Je me demandais si on ne pouvais pas faire des op�rations sur les TDateTime pour obtenir une diff�rence de temps.

  5. #5
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    D�cembre 2019
    Messages
    682
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 95
    Localisation : Autre

    Informations professionnelles :
    Activit� : ..

    Informations forums :
    Inscription : D�cembre 2019
    Messages : 682
    Par d�faut
    Salut,

    En C++, il y a std::chrono (steady_clock (ou high_resolution_clock, si ce n'est pas un alias))
    https://en.cppreference.com/w/cpp/ch...eady_clock/now
    https://en.cppreference.com/w/cpp/ch...tion_clock/now

  6. #6
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    La pr�cision d'un TDateTime est de l'ordre le la milliseconde
    pour l'api MS c'est de l'ordre de la microseconde.
    concernant les API C++ pure cela d�pend de la vitesse du processor voir ttps://stackoverflow.com/questions/4...e-is-stdchrono

    donc cela d�pend essentiellement de la pr�cision attendue

    cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  7. #7
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 538
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 538
    Par d�faut
    Citation Envoy� par kurul1 Voir le message
    Je cherche donc un code pouvant fonctionner sur toutes les plateformes.
    .
    QueryPerformanceCounter est une API sp�cifique Windows donc ne fonctionnera pas sur d'autres plateformes.
    Ensuite cette fonction ne fonctionne pas forc�ment sur tous les CPU.
    Pour faire du code g�n�rique pour toutes les plateformes cela me para�t difficile car les fonctions de calcul de temps sont sp�cifiques � un OS, � part celles standard �videmment

  8. #8
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    277
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : D�veloppeur multiplateformes
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 277
    Par d�faut
    Bonjour,

    Beaucoup de param�tres peuvent intervenir si l'on veut une grande pr�cision.
    Cela d�pend notamment de la fa�on dont sont trait�s les messages par le syst�me d'exploitation, en fonction de sa charge, dans quel ordre, avec quel niveau de priorit�.
    Il est, je le crains, est assez illusoire de l'obtenir de fa�on purement logiciel avec le m�me code sur toutes les plateformes.
    Tout d�pend bien sur du niveau de pr�cision souhait�.
    C'est un sujet techniquement int�ressant.

    Yves

  9. #9
    Membre �m�rite
    Avatar de Gouyon
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 138
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 138
    Billets dans le blog
    5
    Par d�faut
    Dans mon domaine j'ai parfois besoin d'avoir un temps pr�cis et dans ce cas j'ajoute � ma machine une carte sp�cifique qui assure une mesure exact et pr�cise du temps.
    �videment cette solution n'est pas applicable � Android

  10. #10
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    277
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : D�veloppeur multiplateformes
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 277
    Par d�faut
    Citation Envoy� par Gouyon Voir le message
    Dans mon domaine j'ai parfois besoin d'avoir un temps pr�cis et dans ce cas j'ajoute � ma machine une carte sp�cifique qui assure une mesure exact et pr�cise du temps.
    �videment cette solution n'est pas applicable � Android
    Cela pourrait m'int�resser dans le cadre d'une application scientifique.
    De quel type de carte s'agit-il ?

  11. #11
    Membre �m�rite
    Avatar de Gouyon
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 138
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 138
    Billets dans le blog
    5
    Par d�faut
    Citation Envoy� par yvslms Voir le message
    Cela pourrait m'int�resser dans le cadre d'une application scientifique.
    De quel type de carte s'agit-il ?
    Il s'agit de la carte TSYNC en PCIe la documentation est trouvable ici (https://www.acquisys.fr/product/tsync-pmc/)
    Mais il y en a plein d'autre et de type diff�rent il suffit de faire une recherche

  12. #12
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    277
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : D�veloppeur multiplateformes
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 277
    Par d�faut
    Citation Envoy� par Gouyon Voir le message
    Il s'agit de la carte TSYNC en PCIe la documentation est trouvable ici (https://www.acquisys.fr/product/tsync-pmc/)
    Mais il y en a plein d'autre et de type diff�rent il suffit de faire une recherche
    Ok - Merci !!!

    Yves

  13. #13
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    hello
    un vaste choix de cartes et solutions ici:https://www.brandywinecomm.com/46-pr...al-timing-card
    cdlt
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  14. #14
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Salut, je crois que personne n'a parl� de Diagnostics::TStopwatch:
    Utilisez TStopwatch pour obtenir l'acc�s aux minuteurs � haute r�solution qui peuvent �tre utilis�s pour surveiller le temps d'ex�cution de certaines op�rations. TStopwatch utilise la fonctionnalit� d�pendante du syst�me d'exploitation pour obtenir l'acc�s aux minuteurs � haute r�solution, si disponible. Sinon, les minuteurs habituels sont utilis�s.
    Je l'utilise dans un projet C++Builder multi-plateforme et je n'ai pas de probl�me. Pour l'impl�mentation Windows c'est QueryPerformanceFrequency qui est utilis�.

Discussions similaires

  1. Calcul scientifique litteral en C++/RAD STUDIO
    Par alex25071 dans le forum C++
    R�ponses: 4
    Dernier message: 08/12/2016, 14h48
  2. R�ponses: 0
    Dernier message: 09/01/2013, 10h32
  3. [IDE] Probl�me avec AVIFILEOPEN sous RAD Studio XE3
    Par kurul1 dans le forum C++Builder
    R�ponses: 3
    Dernier message: 04/10/2012, 11h26
  4. R�ponses: 1
    Dernier message: 06/09/2012, 09h12
  5. temps CPU sous visual studio 2005
    Par pascale_92 dans le forum C++
    R�ponses: 1
    Dernier message: 30/10/2007, 16h50

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