dépend de ce système que vous êtes. Il peut utiliser un 32+ ou un 64 bits clock_t
. Il va certainement se renverser, mais s'il est en 64 bits, il sera OK pendant un certain temps avant qu'il ne se renverse - 2 microsecondes est encore un temps terrible (environ 2 secondes, et il y a environ 2 secondes par jour, donc 2 jours - ce qui est d'environ 2 , ou un million, années ...;)
Bien sûr, dans un système 32 bits, nous avons environ 2 = 4096 secondes à une résolution de microseconde. Une heure étant 3600s = environ 1h10m.
Cependant, un autre problème, dans certains systèmes, est que clock()
renvoie le temps CPU utilisé, donc si vous dormez, il ne compte pas comme temps dans clock()
. Et bien sûr, même si CLOCKS_PER_SEC
peut être 1000000, cela ne signifie pas que vous obtenez une résolution de microsecondes - dans de nombreux systèmes, il "saute" 10000 unités à la fois.
En résumé, "probablement une mauvaise idée".
Si vous avez C++ 11 sur le système, utilisez std::chrono
, qui a plusieurs options pour Chronométrage qui sont suffisamment bonnes pour la plupart des buts (mais font étudier la std::chrono
docs)
Exemple Code:
#include <iostream>
#include <chrono>
#include <unistd.h> // replace with "windows.h" if needed.
int main()
{
std::chrono::time_point<std::chrono::system_clock> start, end;
start = std::chrono::system_clock::now();
// 10 seconds on a unix system. Sleep(10000) on windows will be the same thing
sleep(10);
end = std::chrono::system_clock::now();
int elapsed_seconds = std::chrono::duration_cast<std::chrono::seconds>
(end-start).count();
std::cout << "elapsed time: " << elapsed_seconds << "s\n";
}
Si cela vous inquiète, consultez plutôt clock_gettime de librt (CLOCK_MONOTONIC, ...). Cela pourrait être plus conforme à ce que vous voulez, en supposant que vous êtes autorisé à utiliser la bibliothèque librt. –