Changeset 3274 in Sophya for trunk/SophyaLib/SysTools/ctimer.h


Ignore:
Timestamp:
Jul 6, 2007, 2:54:12 PM (18 years ago)
Author:
ansari
Message:

Ajout methodes d'acces au temps CPU et elapsed ds la classe Timer , Reza 05/07/2007

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/SysTools/ctimer.h

    r2322 r3274  
    11// This may look like C code, but it is really -*- C++ -*-
    22//
    3 // $Id: ctimer.h,v 1.4 2003-02-11 15:31:07 cmv Exp $
     3// $Id: ctimer.h,v 1.5 2007-07-06 12:54:12 ansari Exp $
    44//
    55
     
    1616
    1717// <summary> Permet de chronometrer des fonctions. </summary>
    18 // La macro TIMEF cree un objet de class Timer qui memorise
    19 // l'heure de sa creation, et le temps CPU.
    20 
     18// Class Timer qui memorise l'heure de sa creation, et le temps CPU.
    2119// A la fin du bloc ou de la procedure, l'objet est detruit,
    2220// et son destructeur affiche le temps ecoule.
    2321
    24 // La macro SPLITTIME lui permet d'afficher des temps partiels.
    2522namespace SOPHYA {
    2623
     
    2926public:
    3027  // L'objet memorise le temps CPU et l'heure, et le nom donne
    31   Timer(const char* name=0);
     28  Timer(const char* name=0, bool prfg=true);
    3229
    3330  // Le destructeur appelle split sans parametre.
     
    3633  // Affiche le temps ecoule total/partiel, avec le nom eventuel.
    3734  // Si pas de parametre affiche le nom donne a la creation.
    38   void Split(const char* comm=0);
     35  void Split(const char* comm=0, bool prfg=false);
    3936
    4037  // Sert a eviter que GNU ne pretende qu'on utilise pas l'objet...
     
    4239  void Nop() {}
    4340
     41  /*! \brief Return the total elapsed time (number of seconds),
     42    between the object creation and the last call to Split().
     43  */
     44  inline int_8 TotalElapsedTime() { return elapSecT ; }
     45  /*! \brief Return the partial elapsed time (number of seconds).
     46      between the last two calls to Split().
     47  */
     48  inline int_8 PartialElapsedTime() { return elapSecP ; }
     49
     50  /*! \brief Return the total CPU time in seconds,
     51    between the object creation and the last call to Split().
     52  */
     53  inline float TotalCPUTime() { return  cpuSecT; }
     54  /*! \brief Return the partial CPU time in seconds,
     55      between the last two calls to Split().
     56  */
     57  inline float PartialCPUTime() { return  cpuSecP; }
     58
    4459private:
    4560  clock_t cpu0, cpuSplit;
    4661  time_t  elapse0, elapseSplit;
     62  float cpuSecT, cpuSecP;     // Total and partial CPU time
     63  int_8 elapSecT, elapSecP;    // Total and partial elapsed time
    4764  string timerName;
     65  bool defprtflg;
    4866};
    4967
    5068} // namespace SOPHYA
    5169
    52 #define TIMEN(x)  Timer timer(x); timer.Nop();
    53 #define TIMEF     Timer timer(__PRETTY_FUNCTION__); timer.Nop();
    54 #define SPLITTIME timer.Split();
     70#define TIMEF     Timer timer(__PRETTY_FUNCTION__); timer.Nop();
    5571
    5672#endif // CTIMER_SEEN
Note: See TracChangeset for help on using the changeset viewer.