Bibliothèque standard C++<chrono>

Introduit dans C++11<chrono>La bibliothèque est utilisée pour gérer l'heure et les dates. Elle fournit un riche ensemble d'outils pour mesurer des intervalles de temps, effectuer des calculs sur des points temporels et gérer les dates et les heures.<chrono>La bibliothèque est un élément central de la bibliothèque standard C++ pour la gestion des opérations liées au temps.

Concepts de base

Points temporels

Un point temporel représente un instant spécifique, généralement associé à une horloge particulière.

Durées

La durée représente l'intervalle de temps entre deux points temporels.

Horloges

Les horloges sont la source des points temporels et des durées. C++ fournit plusieurs horloges différentes, telles que l'horloge système, l'horloge haute résolution, et d'autres.

Syntaxe de base

Inclure les fichiers d'en-tête

Lors de l'utilisation<chrono>Avant d'utiliser la bibliothèque, vous devez inclure le fichier d'en-tête correspondant :

#include <chrono>

Utilisation des points temporels

auto now = std::chrono::system_clock::now();

Utilisation des durées

auto duration = std::chrono::seconds(5);

Calcul des points temporels

auto future_time = now + duration;

Exemple

Mesure du temps d'exécution d'une fonction

Voici un exemple utilisant<chrono>Un exemple simple de mesure du temps d'exécution d'une fonction avec la bibliothèque :

Exemple

#include <iostream>
#include <chrono>

void someFunction() {
    // Simuler quelques opérations
    std::this_thread::sleep_for(std::chrono::seconds(1));
}

int main() {
    auto start = std::chrono::high_resolution_clock::now();

    someFunction();

    auto end = std::chrono::high_resolution_clock::now();

    auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
    std::cout << "La fonction a pris " << duration.count() << " millisecondes pour s'exécuter." << std::endl;

    return 0;
}

Résultat de sortie :

Function took 1000 milliseconds to execute.

Gestion des dates et des heures

<chrono>La bibliothèque peut également être utilisée pour gérer les dates et les heures. Voici un exemple utilisantstd::chrono::system_clocketstd::chrono::time_pointExemple d'obtention de la date et de l'heure actuelles :

Exemple

#include <iostream>
#include <chrono>
#include <ctime>

int main() {
    auto now = std::chrono::system_clock::now();
    std::time_t now_c = std::chrono::system_clock::to_time_t(now);

    std::cout << "Date et heure actuelles : " << std::ctime(&now_c);

    return 0;
}

Résultat de sortie :

Current date and time: Fri Mar 11 12:34:56 2022

Utilisation avancée

Utilisation de différentes horloges

C++ fournit plusieurs horloges, par exemple :

  • std::chrono::system_clock: Horloge système, généralement synchronisée avec l'heure système.
  • std::chrono::steady_clock: Horloge monotone, non affectée par les modifications de l'heure système.
  • std::chrono::high_resolution_clock: Fournit l'horloge avec la plus haute résolution.

Formatage de la date et de l'heure

Vous pouvez utiliser<iomanip>et<ctime>pour formater la date et l'heure :

Exemple

#include <iostream>
#include <iomanip>
#include <chrono>
#include <ctime>

int main() {
    auto now = std::chrono::system_clock::now();
    std::time_t now_c = std::chrono::system_clock::to_time_t(now);

    std::cout << std::put_time(std::localtime(&now_c), "%Y-%m-%d %H:%M:%S");

    return 0;
}

Résultat de sortie :

2022-03-11 12:34:56
autres extensions