15 TBenchmark *gBenchmark = 0;
28 TBenchmark::TBenchmark(): TNamed()
41 TBenchmark::TBenchmark(
const TBenchmark& bm) :
50 fNames =
new TString[fNmax];
51 fRealTime =
new Float_t[fNmax];
52 fCpuTime =
new Float_t[fNmax];
53 fTimer =
new TStopwatch[fNmax];
55 for(Int_t i = 0; i<fNmax; ++i) {
56 fNames[i] = bm.fNames[i];
57 fRealTime[i] = bm.fRealTime[i];
58 fCpuTime[i] = bm.fCpuTime[i];
59 fTimer[i] = bm.fTimer[i];
66 TBenchmark& TBenchmark::operator=(
const TBenchmark& bm)
69 TNamed::operator=(bm);
78 fNames =
new TString[fNmax];
79 fRealTime =
new Float_t[fNmax];
80 fCpuTime =
new Float_t[fNmax];
81 fTimer =
new TStopwatch[fNmax];
83 for(Int_t i = 0; i<fNmax; ++i) {
84 fNames[i] = bm.fNames[i];
85 fRealTime[i] = bm.fRealTime[i];
86 fCpuTime[i] = bm.fCpuTime[i];
87 fTimer[i] = bm.fTimer[i];
96 TBenchmark::~TBenchmark()
99 if (fNames) {
delete [] fNames; fNames = 0;}
100 if (fRealTime) {
delete [] fRealTime; fRealTime = 0;}
101 if (fCpuTime) {
delete [] fCpuTime; fCpuTime = 0;}
102 if (fTimer ) {
delete [] fTimer; fTimer = 0;}
108 Int_t TBenchmark::GetBench(
const char *name)
const
110 for (Int_t i=0;i<fNbench;i++) {
111 if (!strcmp(name,(
const char*)fNames[i]))
return i;
119 Float_t TBenchmark::GetCpuTime(
const char *name)
121 Int_t bench = GetBench(name);
122 if (bench >= 0)
return fCpuTime[bench];
129 Float_t TBenchmark::GetRealTime(
const char *name)
131 Int_t bench = GetBench(name);
132 if (bench >= 0)
return fRealTime[bench];
139 void TBenchmark::Print(
const char *name)
const
141 Int_t bench = GetBench(name);
142 if (bench < 0)
return;
143 Printf(
"%-10s: Real Time = %6.2f seconds Cpu Time = %6.2f seconds",name,fRealTime[bench],fCpuTime[bench]);
149 void TBenchmark::Reset()
157 void TBenchmark::Show(
const char *name)
174 void TBenchmark::Start(
const char *name)
177 fNames =
new TString[fNmax];
178 fRealTime =
new Float_t[fNmax];
179 fCpuTime =
new Float_t[fNmax];
180 fTimer =
new TStopwatch[fNmax];
182 Int_t bench = GetBench(name);
183 if (bench < 0 && fNbench < fNmax ) {
185 fNames[fNbench] = name;
188 fTimer[bench].Reset();
189 fTimer[bench].Start();
190 fRealTime[bench] = 0;
192 }
else if (bench >= 0) {
194 fTimer[bench].Continue();
197 Warning(
"Start",
"too many benchmarks");
203 void TBenchmark::Stop(
const char *name)
205 Int_t bench = GetBench(name);
206 if (bench < 0)
return;
208 fTimer[bench].Stop();
209 fRealTime[bench] = fTimer[bench].RealTime();
210 fCpuTime[bench] = fTimer[bench].CpuTime();
216 void TBenchmark::Summary(Float_t &rt, Float_t &cp)
220 for (Int_t i=0;i<fNbench;i++) {
221 Printf(
"%-10s: Real Time = %6.2f seconds Cpu Time = %6.2f seconds",(
const char*)fNames[i],fRealTime[i],fCpuTime[i]);
225 Printf(
"%-10s: Real Time = %6.2f seconds Cpu Time = %6.2f seconds",
"TOTAL",rt,cp);