Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TStopwatch.h
Go to the documentation of this file.
1 // @(#)root/base:$Id$
2 // Author: Fons Rademakers 11/10/95
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TStopwatch
13 #define ROOT_TStopwatch
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TStopwatch //
19 // //
20 // Stopwatch class. This class returns the real and cpu time between //
21 // the start and stop events. //
22 // //
23 //////////////////////////////////////////////////////////////////////////
24 
25 #include "TObject.h"
26 
27 
28 class TStopwatch : public TObject {
29 
30 private:
31  enum EState { kUndefined, kStopped, kRunning };
32 
33  Double_t fStartRealTime; //wall clock start time
34  Double_t fStopRealTime; //wall clock stop time
35  Double_t fStartCpuTime; //cpu start time
36  Double_t fStopCpuTime; //cpu stop time
37  Double_t fTotalCpuTime; //total cpu time
38  Double_t fTotalRealTime; //total real time
39  EState fState; //stopwatch state
40  Int_t fCounter; //number of times the stopwatch was started
41 
42  static Double_t GetRealTime();
43  static Double_t GetCPUTime();
44 
45 public:
46  TStopwatch();
47  void Start(Bool_t reset = kTRUE);
48  void Stop();
49  void Continue();
50  Int_t Counter() const { return fCounter; }
51  Double_t RealTime();
52  void Reset() { ResetCpuTime(); ResetRealTime(); }
53  void ResetCpuTime(Double_t time = 0) { Stop(); fTotalCpuTime = time; }
54  void ResetRealTime(Double_t time = 0) { Stop(); fTotalRealTime = time; }
55  Double_t CpuTime();
56  void Print(Option_t *option="") const;
57 
58  ClassDef(TStopwatch,1) //A stopwatch which times real and cpu time
59 };
60 
61 #endif