Code qui donne le temps d'exécution sous linux [Résolu]

Signaler
Messages postés
34
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
20 juin 2011
-
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
-
Bonjour,
si le vous plait est ce que vous pouvez m'aider un peu pour comprendre ce code qui permet d'obtenir le temps d'exécution sous linux
 
#include "MTTime.h"
 
MTTime::MTTime()
       : origin_("")
  {
    gettimeofday(&begin_, &tz_);
  }
 
MTTime::MTTime(const std::string& origin)
    : origin_(origin)
  {
    gettimeofday(&begin_, &tz_);
  }
 
MTTime::~MTTime()
  {
    gettimeofday(&end_, &tz_);
    long time = (end_.tv_sec - begin_.tv_sec) * 
1000000L + (end_.tv_usec - begin_.tv_usec);
    if (!origin_.empty())
    cout << "[" << origin_ << "]";
    cout << "Temps d&#8217;exécution : " << time << " us" << std::endl;
 
      }
#ifndef __MTime__
#define __MTime__
#include 
#include <sstream>
#include <ctime>
#include <sys/time.h>
 
class MTTime
{
  std::string origin_;
  struct timeval begin_, end_;
  struct timezone tz_;
 
public:
        MTTime();
        MTTime(const std::string& origin);
        ~MTTime();
};
#endif

2 réponses

Messages postés
14876
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
27 novembre 2020
93
Yop,
A priori, c'est une classe qui englobe la fonctionnalité de calcul de durée:
- le compteur est lancé dans le constructeur, donc quand tu alloues l'objet
- le calcul se fait dans le destructeur, donc quand tu désalloues l'objet


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
Ça ressemble *énormément* à ce que j'ai fait :p. Soit dit en passant j'ai depuis amélioré cette classe pour qu'elle gère Windows et Linux:
http://0217021.free.fr/portfolio/axel.berardino/articles/calculer-le-temps-execution

Comme l'a très bien expliqué Buno, c'est un calcul qui est fait en utilisant le RAII (Resource Acquisiation Is Initialization).
L'avantage principale, en plus de sa simplicité, est de s'assurer que le calcul sera fait, même si tu fais un "return" au milieu de ton scope ou que tu lèves une exception.

Bien entendu, tu peux très bien ne pas utiliser ce système et lancer toi même un gettimeofday, surtout si tu as besoin de stocker le résultat. Je ne suis pas encore satfisfait de cette classe sous cette forme et je pense l'améliorer prochainement.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question