Simuler une horloge c++
Fermé
hazelia
Messages postés
40
Date d'inscription
dimanche 4 juillet 2010
Statut
Membre
Dernière intervention
2 juin 2014
-
24 août 2011 à 14:19
hazelia Messages postés 40 Date d'inscription dimanche 4 juillet 2010 Statut Membre Dernière intervention 2 juin 2014 - 24 août 2011 à 16:14
hazelia Messages postés 40 Date d'inscription dimanche 4 juillet 2010 Statut Membre Dernière intervention 2 juin 2014 - 24 août 2011 à 16:14
A voir également:
- Simuler une horloge c++
- Horloge mondiale gratuite - Télécharger - Divers Utilitaires
- Télécharger horloge gratuit pour portable - Télécharger - Guide Android
- Horloge en ligne aesthetic - Télécharger - Thèmes & Fonds d'écran
- Météo & Horloge Widget Android - Télécharger - Divers Utilitaires
- Widget horloge windows 11 - Guide
5 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
Modifié par KX le 24/08/2011 à 15:16
Modifié par KX le 24/08/2011 à 15:16
Nanosecondes : impossible !
Avec un processeur à 1 GHz tu peux faire une opération par nanoseconde.
Actuellement les processeurs sont de l'ordre de 3 GHz (soit 3 opérations par nanoseconde) donc à moins que ton programme n'ai que 3 instructions à exécuter par top d'horloge, tu ne pourras jamais atteindre l'ordre de grandeur du nanoseconde !
À titre de comparaison les horloges atomiques au Césium ont une fréquence de 9.2 GHz, même avec ça tu n'arriverais pas à faire ton programme précis à la nanoseconde près !
Donc en étant exigeant dans la limite du raisonnable, tu devras te contenter des microsecondes, commence tes recherches par gettimeofday
La confiance n'exclut pas le contrôle
Avec un processeur à 1 GHz tu peux faire une opération par nanoseconde.
Actuellement les processeurs sont de l'ordre de 3 GHz (soit 3 opérations par nanoseconde) donc à moins que ton programme n'ai que 3 instructions à exécuter par top d'horloge, tu ne pourras jamais atteindre l'ordre de grandeur du nanoseconde !
À titre de comparaison les horloges atomiques au Césium ont une fréquence de 9.2 GHz, même avec ça tu n'arriverais pas à faire ton programme précis à la nanoseconde près !
Donc en étant exigeant dans la limite du raisonnable, tu devras te contenter des microsecondes, commence tes recherches par gettimeofday
La confiance n'exclut pas le contrôle
hazelia
Messages postés
40
Date d'inscription
dimanche 4 juillet 2010
Statut
Membre
Dernière intervention
2 juin 2014
24 août 2011 à 15:24
24 août 2011 à 15:24
euh!... J'avoue que je n'ai pas trop compris ce que tu voulais dire, peut-être que que je me suis mal exprimée....
Dans mon projet, je m'intéresse pas à un traitement temps réel, j'aurais juste besoin d'un objet horloge qui me fait sortir des valeurs séparés d'un pas de 10 puissance -9, ou je vais stocker dans un vector de double...
J'ai tenté le code ci-après. Je sais que j'ai mis une boucle infinie qui bloque le programme, mais je ne sais pas quoi mettre dans la condition:
Clock.h
class Clock
{
private:
double m_timer;
std::vector<double> m_time;
public:
Clock();
~Clock();
std::vector<double> getm_time();
void startClock();
};
Clock.cpp
Clock::Clock(): m_timer(0)
{
m_time.push_back(m_timer);
}
Clock::~Clock()
{
}
vector<double> Clock::getm_time()
{
return m_time;
}
void Clock::startClock()
{
while (1)
{
m_timer=m_timer+1/1e9;
m_time.push_back(m_timer);
}
}
Merci de m'aider..
Dans mon projet, je m'intéresse pas à un traitement temps réel, j'aurais juste besoin d'un objet horloge qui me fait sortir des valeurs séparés d'un pas de 10 puissance -9, ou je vais stocker dans un vector de double...
J'ai tenté le code ci-après. Je sais que j'ai mis une boucle infinie qui bloque le programme, mais je ne sais pas quoi mettre dans la condition:
Clock.h
class Clock
{
private:
double m_timer;
std::vector<double> m_time;
public:
Clock();
~Clock();
std::vector<double> getm_time();
void startClock();
};
Clock.cpp
Clock::Clock(): m_timer(0)
{
m_time.push_back(m_timer);
}
Clock::~Clock()
{
}
vector<double> Clock::getm_time()
{
return m_time;
}
void Clock::startClock()
{
while (1)
{
m_timer=m_timer+1/1e9;
m_time.push_back(m_timer);
}
}
Merci de m'aider..
Bonjour
Je ne comprends pas très bien ta demande. Tu parles de simulation. Si c'est vraiment une simulation que tu cherches à faire, tu n'as aucun besoin d'une véritable horloge, un simple compteur suffit.
Si tu as vraiment besoin d'une horloge, je rejoins KX, n'y compte pas avec un PC même haut de gamme. Avec des circuits logiques programmables, ce n'est pas complètement exclu, mais ça demande des compétences
Je ne comprends pas très bien ta demande. Tu parles de simulation. Si c'est vraiment une simulation que tu cherches à faire, tu n'as aucun besoin d'une véritable horloge, un simple compteur suffit.
Si tu as vraiment besoin d'une horloge, je rejoins KX, n'y compte pas avec un PC même haut de gamme. Avec des circuits logiques programmables, ce n'est pas complètement exclu, mais ça demande des compétences
hazelia
Messages postés
40
Date d'inscription
dimanche 4 juillet 2010
Statut
Membre
Dernière intervention
2 juin 2014
24 août 2011 à 15:46
24 août 2011 à 15:46
Bonjour,
Effectivement, c'est d'un compteur que j'aurai besoin puisque je ne cherche pas vraiment le temps système ni sa performance en calcul..
Auriez vous une proposition pour arrêter mon compteur....
Merci :)
Effectivement, c'est d'un compteur que j'aurai besoin puisque je ne cherche pas vraiment le temps système ni sa performance en calcul..
Auriez vous une proposition pour arrêter mon compteur....
Merci :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
24 août 2011 à 15:50
24 août 2011 à 15:50
Il te suffirait juste de prendre trois unsigned int, qui compteraient le nombre de siècles, de secondes, et de nanosecondes. Ce sera bien plus précis que des double.
Avec ça tu devrais tenir plus de 400 milliards d'années à la nanoseconde près !
Avec ça tu devrais tenir plus de 400 milliards d'années à la nanoseconde près !
hazelia
Messages postés
40
Date d'inscription
dimanche 4 juillet 2010
Statut
Membre
Dernière intervention
2 juin 2014
24 août 2011 à 15:54
24 août 2011 à 15:54
Merci.....................................................................................................................................................oups, j'ai pas pu arriver aux 400 milliards d'années à la nanoseconde près :s
hazelia
Messages postés
40
Date d'inscription
dimanche 4 juillet 2010
Statut
Membre
Dernière intervention
2 juin 2014
24 août 2011 à 15:55
24 août 2011 à 15:55
NB: je ne rigolais pas quand j'ai posté ma question.
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
24 août 2011 à 16:02
24 août 2011 à 16:02
Je rigole pas non plus !
En fait il y a encore mieux, tu prends un unsigned long long int pour compter les nombres de secondes, ça te fait au maximum 2^64 secondes (soit 584.6 milliards d'années)
Et tu t'aides d'un unsigned long int (maximum = 4,3.10^9) pour compter les nanosecondes...
Et si je dis que c'est plus précis que les double c'est à cause des arrondis, qui sont trop importants avec les double pour ce que tu veux faire !
En fait il y a encore mieux, tu prends un unsigned long long int pour compter les nombres de secondes, ça te fait au maximum 2^64 secondes (soit 584.6 milliards d'années)
Et tu t'aides d'un unsigned long int (maximum = 4,3.10^9) pour compter les nanosecondes...
Et si je dis que c'est plus précis que les double c'est à cause des arrondis, qui sont trop importants avec les double pour ce que tu veux faire !
hazelia
Messages postés
40
Date d'inscription
dimanche 4 juillet 2010
Statut
Membre
Dernière intervention
2 juin 2014
24 août 2011 à 16:14
24 août 2011 à 16:14
OK, merci, c sur que j'aurai pas mal de valeurs à générer ..
Merci bcp!
Merci bcp!