int main () {
struct timeSpec Start, end;
Clock_gettime (horloge_monotonic, &start);
// ... votre code de programme ...
Clock_getTime (Clock_monotonic, &end);
// Calculer le temps écoulé
double elapsed =(end.tv_sec - start.tv_sec) + (double) (end.tv_nsec - start.tv_nsec) / 1000000000.0;
printf ("Temps pris:% .6f secondes \ n", écoulé);
// ... getRusage () ou Times () pour des informations supplémentaires d'utilisation des ressources ...
retour 0;
}
`` '
3. Outils de profilage:
* `gprof`: Analyse un programme pour identifier le temps passé dans différentes fonctions.
* `Valgrind`: Un outil puissant pour la détection des fuites de mémoire et l'analyse des performances.
* `perf`: Un outil de ligne de commande pour le profilage des performances.
Comprendre les temps:
* en temps réel: Le temps total de l'horloge murale que le programme prend pour s'exécuter, y compris le temps passé à attendre les E / S, d'autres processus, etc.
* Temps utilisateur: Le temps du programme passe des instructions en mode utilisateur (code de votre programme).
* Temps du système: Le temps du programme passe des instructions en mode noyau (fonctions du système d'exploitation).
Choisir la bonne méthode:
* pour une mesure simple: La commande `` Time 'est suffisante.
* pour une analyse plus détaillée: Utilisez des appels système comme `Clock_gettime () 'et` getRusage ()'.
* pour le profilage approfondi: Utilisez des outils de profilage comme «GPROF», «Valgrind» ou «Perf».
Remarques importantes:
* Précision: Les mesures temporelles peuvent être affectées par des facteurs tels que la charge du système et la planification.
* frais généraux: Les méthodes de mesure du temps introduisent elles-mêmes les frais généraux, alors soyez conscient de cela lors de l'analyse des performances.
* Unités: Le temps est souvent mesuré en secondes ou en nanosecondes (NS).
Faites-moi savoir si vous souhaitez une explication plus détaillée de toute méthode spécifique ou si vous avez un scénario particulier en tête!