Sauf si vous êtes à la recherche d'un système qui est ni Posix avec une coquille de poisson comme ni de Windows, std::system
est synchrone et renvoie le résultat de la commander. Vous pouvez utiliser le high resolution timer standard pour mesurer le temps de mur:
#include <chrono>
#include <cstdlib>
#include <iostream>
int main()
{
auto before = std::chrono::high_resolution_clock::now();
std::system("sleep 3");
auto after = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(
after - before);
std::cout << "It took " << duration.count() << " microseconds\n";
}
Si vous êtes plutôt intéressé par la quantité de temps CPU que le processus utilisé, je ne pense pas que C++ a une manière standard et multi-plateforme de vous offrir cela. `System` consiste à exécuter une commande.
Supposons que c'est Linux depuis que vous avez utilisé 'fork'. 'system (" time "YOUR_COMMAND)' est suffisant, bien que la consommation de temps soit imprimée sur le terminal. – Thiner
Si vous souhaitez mesurer le temps d'appel 'system' comme les autres sous-routines, vous pouvez passer à' rdtsc'/'gettimeofday'/... (' time' dans time.h n'est pas recommandé car il ne peut retourner que la seconde en cours, et n'est pas utile) – Thiner