Code qui donne le temps d'exécution sous linux

Résolu
elhajjajireda Messages postés 34 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 20 juin 2011 - 20 juin 2011 à 16:03
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 20 juin 2011 à 17:09
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

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
20 juin 2011 à 16:13
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...
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
20 juin 2011 à 17:09
Ç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
3
Rejoignez-nous