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 :

Un Gettime précis à la Nanosecondes?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 13
    Par défaut Un Gettime précis à la Nanosecondes?
    Salut à tous!
    Je suis entrain de dev. une appli qui fonctionne(ra) en temps réel.
    Le problème c'est que sous Windows j'ai du mal à trouver un équivalent à getnanotime()...
    Si jamais quelqu'un a une fonction qui correspondrait et comment l'utiliser se serait super!
    Merci d'avance!

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 481
    Par défaut
    Même getnanotime() n'est pas précise à une nano-seconde près. Une période d'une nano-seconde correspond à une fréquence d'1 Ghz. Ça veut dire qu'il faut calculer au cycle près la durée des instructions des processeurs de dernière génération, entre 2 et 3 Ghz. Au moins sur PC.

    Si tu as réellement besoin d'une précision absolue (mais pas forcément sur cette unité de temps), le mieux est d'écrire quelques lignes d'assembleur et d'inhiber les interruptions si c'est possible. Ça se faisait beaucoup sur 8 bits, dans le temps. On arrivait à faire des merveilles qui fonctionnaient sur des micro-processeurs à 1 Mhz.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 13
    Par défaut
    Oula, non pas d'assembleur, j'en ai déjà fait un peu et euh... j'ai pas le temps de m'attarder a tout revoir...
    Mais une précision de l'ordre d' 1/10 de milli au pire c'est déjà super!
    Ça existe vraiment pas??

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Sous Windows, tu as QueryPerformanceCounter() et QueryPerformanceFrequency()

    Citation Envoyé par MSDN
    The QueryPerformanceCounter function retrieves the current value of the high-resolution performance counter. By calling this function at the beginning and end of a section of code, an application essentially uses the counter as a high-resolution timer. For example, suppose that QueryPerformanceFrequency indicates that the frequency of the high-resolution performance counter is 50,000 counts per second. If the application calls QueryPerformanceCounter immediately before and immediately after the section of code to be timed, the counter values might be 1500 counts and 3500 counts, respectively. These values would indicate that .04 seconds (2000 counts) elapsed while the code executed.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 13
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Donc en gros (dites moi si je me trompe) ces fonctions se base sur le proco?

    en faite dans mon application se serait de se style:

    while (1)
    {
    calcul du tps présent.
    if tps_present - tps_precedent >= delta_t( tjrs égale à 33ms by the way)
    {
    je fais tout mon truc.
    calcul du tps_precedent.
    }
    }

    En gros ca donnerait ca, se serait réalisable avec les fonctions citées plus haut et si oui, un petit coup de main?

    Par contre je suis entrain de penser sachant que mon appli dois pouvoir s'executer sur plein de pc different (dual et mono core d'ailleurs).
    le nombre de clock pour 33ms changera, un moyen simple de le recalculer?

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    QueryPerformanceFrequency() te retourne justement le nombre de tickss par seconde. Le nombre de ticks pour 33ms doit être assez simple à calculer non
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. [C#] Lecture dans un endroit précis d'un fichier ...
    Par maitrebn dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/10/2004, 13h36
  2. Réponses: 2
    Dernier message: 12/07/2004, 11h43
  3. [Warning] comment désactiver un Warning précis?
    Par bigboomshakala dans le forum MFC
    Réponses: 5
    Dernier message: 01/06/2004, 16h07
  4. [débutant] Timer inférieur à 1ms ? Timer + précis ?
    Par hepar dans le forum C++Builder
    Réponses: 6
    Dernier message: 19/02/2004, 18h42
  5. Temps précis portable
    Par KORTA dans le forum C
    Réponses: 3
    Dernier message: 16/09/2003, 13h17

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