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 :

Vitesse d'un thread ou d'une boucle


Sujet :

C++Builder

  1. #1
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut Vitesse d'un thread ou d'une boucle
    Bonjours,

    J'ai une thread qui gére la communication en open modbus entre un pc de supervision et un automate TSX.
    Dans ce thread j'ai mis une boucle while infini, dans cette boucle while il y a une boucle for qui fais toute les requete en lecure et ecriture.
    Je voudrais savoir si il existe un moyen de savoir combien de temps il faut pour faire une boucle compléte.
    Par ex si je met 1 seconde a faire toute mes requetes, c'est a dire a faire l'intégralité de ma boucle for.
    Je pourais par un petit calcul assez simple savoir combien je fais de requete par seconde ou par minutes ou meme par heure.
    C'est pour connaitre la vitesse de communication.

    Par exemple si je fais 22 requete en 2 seconde en prenant en compte que je fais 50 lecture ecriture de mot par requete je pourais dire que ma vitesse de com est de (22*50)/2 = 550 mots/secondes

    Cordialement Baxter
    Tous Probleme a sa solution. Sinon il a le bouton magique : . Et surtous :
    Et ne pas oublier :

  2. #2
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    À mon avis, vous pouvez parfaitement calculer le temps utilisé pour aller d'un point A à un point B par comparaison des temps, si vous êtes à t1 au début et à t2 à la fin, force sera de conclure que le temps utilisé pour réaliser ces actions est de t2-t1.

    À bientôt
    Gilles

  3. #3
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    j'y avais penser mais en recupérant l'heure, la précision est a la seconde, ce qui n'est guère suffisent pour moi.

    la méthode clock est elle a la milliseconde ?
    Tous Probleme a sa solution. Sinon il a le bouton magique : . Et surtous :
    Et ne pas oublier :

  4. #4
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 849
    Points
    849
    Par défaut
    Il faut utiliser un compteur haute précision de Windows... ou si ça suffit, TickCount.

  5. #5
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    L'heure me paraît suffire puisque la précision est la milliseconde.

    Dans votre méthode, déclarez deux variables TDate d1 et d2 et une variable T entière qui sera le nombre de millisecondes :

    Avant la boucle, vous lisez l'heure :

    Après la boucle, idem dans d2 et vous calculez dans T la différence en millisecondes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    d2=Now();
    T=StrToInt(FormatDateTime("szzz",d2-d1));
    T représente en millisecondes le temps utilisé.

    À bientôt
    Gilles

  6. #6
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 849
    Points
    849
    Par défaut
    Il ne faut pas confondre précision et résolution

  7. #7
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Citation Envoyé par ptah35 Voir le message
    Il ne faut pas confondre précision et résolution
    J'ai cru comprendre que le demandeur n'avait pas besoin d'une précision importante. Nous verrons bien sa réponse.

    Si vous avez une solution autre, je vous lirai avec plaisir, je ne connais pas le composant dont vous parlez.

    À bientôt
    Gilles

  8. #8
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    effectivement il ne faut pas une précision astronomique
    c'est uniquement pour connaitre aproximativement la vitese de ma communication open modbus.

    Donc jai mis en place la solution de "Gilles Louïse", et sa fonctionne bien et la précision me convien parfaitement.

    je vous remervie encore de vos reponses.

    Cordialement Baxter

    PS pour info la vitesse de ma com Open modbus est donc d'environ 1000 mots par secondes ce qui fais environ la lecture (ou lecriture) d'un mot toute les 1 ms. Je ne sais pas si vous connaisez le protocole mais sa vous parais bien ? le pc et lautomate son relié en tcp/ip 10 Mbit
    Tous Probleme a sa solution. Sinon il a le bouton magique : . Et surtous :
    Et ne pas oublier :

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

Discussions similaires

  1. Thread sleep dans une boucle
    Par Sharcoux dans le forum Général Java
    Réponses: 7
    Dernier message: 17/03/2013, 19h29
  2. thread avec return dans une boucle
    Par Tanebisse dans le forum Général Java
    Réponses: 19
    Dernier message: 19/05/2008, 17h42
  3. Réponses: 23
    Dernier message: 05/09/2007, 11h53
  4. esque un thread stop une boucle infinie?
    Par aefmaaradji84 dans le forum C++/CLI
    Réponses: 5
    Dernier message: 18/07/2007, 09h42
  5. Réponses: 4
    Dernier message: 04/05/2007, 14h30

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