std:: clock
|
Défini dans l'en-tête
<ctime>
|
||
|
std::
clock_t
clock
(
)
;
|
||
Retourne le temps processeur approximatif utilisé par le processus depuis le début d'une ère définie par l'implémentation liée à l'exécution du programme. Pour convertir la valeur résultante en secondes, divisez-la par CLOCKS_PER_SEC .
Seule la différence entre deux valeurs renvoyées par différents appels à
std::clock
est significative, car le début de l'ère
std::clock
ne coïncide pas nécessairement avec le démarrage du programme.
std::clock
peut avancer plus rapidement ou plus lentement que l'horloge murale, selon les ressources d'exécution allouées au programme par le système d'exploitation. Par exemple, si le processeur est partagé avec d'autres processus,
std::clock
peut avancer plus lentement que l'horloge murale. En revanche, si le processus actuel est multithreadé et que plusieurs cœurs d'exécution sont disponibles,
std::clock
peut avancer plus rapidement que l'horloge murale.
Table des matières |
Valeur de retour
Temps processeur utilisé par le programme jusqu'à présent.
- Si le temps processeur utilisé n'est pas disponible, retourne ( std:: clock_t ) ( - 1 ) .
- Si la valeur du temps processeur utilisé ne peut pas être représentée par std::clock_t , retourne une valeur non spécifiée.
Exceptions
Ne lance rien.
Notes
Sur les systèmes compatibles POSIX,
clock_gettime
avec l'identifiant d'horloge
CLOCK_PROCESS_CPUTIME_ID
offre une meilleure résolution.
La valeur retournée par
clock()
peut boucler sur certaines implémentations. Par exemple, sur une telle implémentation, si
std::clock_t
est un entier signé de 32 bits et
CLOCKS_PER_SEC
vaut
1
'000'
000
, il bouclera après environ 2147 secondes (environ 36 minutes).
Exemple
Cet exemple démontre la différence entre le temps
clock()
et le temps réel.
#include <chrono> #include <ctime> #include <iomanip> #include <iostream> #include <thread> // The function f() does some time-consuming work. void f() { volatile double d = 0; for (int n = 0; n != 10000; ++n) for (int m = 0; m != 10000; ++m) d += d * n * m; } int main() { const std::clock_t c_start = std::clock(); auto t_start = std::chrono::high_resolution_clock::now(); std::thread t1(f); std::thread t2(f); // f() is called on two threads t1.join(); t2.join(); const std::clock_t c_end = std::clock(); const auto t_end = std::chrono::high_resolution_clock::now(); std::cout << std::fixed << std::setprecision(2) << "CPU time used: " << 1000.0 * (c_end - c_start) / CLOCKS_PER_SEC << "ms\n" << "Wall clock time passed: " << std::chrono::duration<double, std::milli>(t_end - t_start) << '\n'; }
Sortie possible :
CPU time used: 1590.00ms Wall clock time passed: 808.23ms
Voir aussi
|
convertit un objet
std::time_t
en une représentation textuelle
(fonction) |
|
|
retourne l'heure actuelle du système comme temps depuis l'époque
(fonction) |
|
|
Documentation C
pour
clock
|
|