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 Discussion :

Question de temps


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut Question de temps
    Bonjour,
    je suis un peu perdu dans mon programme alors j'espere que vous pourrez m'aider.
    j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    define frequence 449e6
    precedent= RDTSC();
    ...
    precedent= RDTSC();
    ...
    TempsDernierCycle=(suivant-precedent)/frequence;
    RDTSC() nous donne le nombre de cycle.
    Pouvez-vous me dire si TempsDernierCycle est en millisecondes, en microsecondes en en secondes?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut
    tout dépend de l'unité de "frequence"

  3. #3
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Logiquement la fréquence est cycles/s donc le résultat doit être en secondes. Par contre la valeur de retour du deuxième appel à RDTSC() devrait être affecté à suivant logiquement.
    Je trouve ça bizarre de chercher à avoir un temps avec RDTSC, normalement si tu l'utilises c'est que ce n'est pas assez précis avec les millisecondes. Sous Windows tu peux utiliser GetTickCount() pour avoir des ms directement.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     tout dépend de l'unité de "frequence"
    ben c'est 446MHz

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Logiquement la fréquence est cycles/s donc le résultat doit être en secondes. Par contre la valeur de retour du deuxième appel à RDTSC() devrait être affecté à suivant logiquement.
    Je trouve ça bizarre de chercher à avoir un temps avec RDTSC, normalement si tu l'utilises c'est que ce n'est pas assez précis avec les millisecondes. Sous Windows tu peux utiliser GetTickCount() pour avoir des ms directement.
    si c'est en secondes alors un usleep(1) me fait 68 usecondes sous ubuntu.
    Je voudrais bien avoir une valeur plus petite, je sais que mon programme doit être implanté dans un temps reel mais pour l'instant non.
    Si vous trouvé d'autre solutions sous ubuntu, ca serait bien gentil.

  5. #5
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    clock_gettime est assez portable et précis.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut
    Je pense que ca doit être mon RDTSC qui ne doit pas être bon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    double RDTSC(void)
    {
      unsigned long long x;
      __asm__ volatile  (".byte 0x0f, 0x31" : "=A"(x));
      return (double)x;
    }

  7. #7
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    C'est un unsigned long long qu'elle doit retourner. Pour l'encodage je vérifierai chez moi mais il n'y a pas moyen de mettre rdtsc directement ?

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut
    mainatenant j'ai aussi j'ai changé les printf et j'obtiens toujours 0.000
    Ca me parait un peut trop court pour être la réalité
    j'ai bien regardé, ca peut que être sur le retour de la fonction RDTSC que l'erreur se fait ou sur quelques calculs que j'ai fait avec ca.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    precedent=RDTSC();
    ...
    suivant= RDTSC();
    ...
    (unsigned long long)(suivant-precedent)/frequence;
    frequence etant un float

Discussions similaires

  1. [RTS] Une question de temps
    Par Fax37 dans le forum Réseau et multijoueurs
    Réponses: 6
    Dernier message: 11/03/2011, 17h24
  2. [curl] question si temps max
    Par Merfolk dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2009, 09h39
  3. Question de temps de calculs
    Par deubelte dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/11/2009, 18h40
  4. Réponses: 16
    Dernier message: 11/07/2006, 11h30
  5. Tutoriel sur le BDE ? (et question en même temps!)
    Par Yomane dans le forum C++Builder
    Réponses: 7
    Dernier message: 18/02/2004, 17h39

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