#include "AliHLTComponentBenchmark.h"
AliHLTComponentBenchmark::AliHLTComponentBenchmark( const char *Name )
:fComponentName(Name),fNTimers(0),fNEvents(0), fTotalInput(0),fTotalOutput(0), fStatistics()
{
Reset();
}
void AliHLTComponentBenchmark::Reset()
{
fNEvents = 0;
fTotalInput = 0;
fTotalOutput = 0;
for( int i=0; i<10; i++ ){
fTimers[i].Reset();
fTotalRealTime[i] = 0;
fTotalCPUTime[i] = 0;
}
fStatistics = "";
}
void AliHLTComponentBenchmark::SetName( const char *Name )
{
fComponentName = Name;
}
void AliHLTComponentBenchmark::SetTimer( Int_t i, const char *Name )
{
if( i>=10 ) return;
if( i>=fNTimers ){
for( ; fNTimers<=i; fNTimers++ ){
fTimers[fNTimers].Reset();
fTotalRealTime[fNTimers] = 0;
fTotalCPUTime[fNTimers] = 0;
fNames[fNTimers] = Form("timer %d",fNTimers);
}
fNames[i] = Name;
}
}
void AliHLTComponentBenchmark::StartNewEvent()
{
fNEvents++;
for( int i=0; i<10; i++ ){
fTimers[i].Reset();
}
}
void AliHLTComponentBenchmark::Start( Int_t i )
{
if( i>=10 ) return;
fTimers[i].Start();
}
void AliHLTComponentBenchmark::Stop( Int_t i )
{
if( i>=10 ) return;
fTimers[i].Stop();
fTotalRealTime[i]+= fTimers[i].RealTime();
fTotalCPUTime[i] += fTimers[i].CpuTime();
}
void AliHLTComponentBenchmark::AddInput( Double_t x )
{
fTotalInput+=x;
}
void AliHLTComponentBenchmark::AddOutput( Double_t x )
{
fTotalOutput+=x;
}
const char *AliHLTComponentBenchmark::GetStatistics()
{
if( fNEvents<=0 ) return fStatistics.Data();
float ratio = 1;
if( fTotalInput >0 ) ratio = fTotalOutput / fTotalInput;
fStatistics = Form("%s, %ld events: in %.1f Kb, out %.1f Kb, ratio %.1f",
fComponentName.Data(), fNEvents, fTotalInput/fNEvents/1024, fTotalOutput/fNEvents/1024, ratio);
if( fNTimers<=0 ) return fStatistics.Data();
float hz = ( fTotalRealTime[0] > 0 ) ?fNEvents/fTotalRealTime[0] : 0;
fStatistics+=Form("; Time %.1fms/%.1fHz (real/cpu = ",fTotalRealTime[0]/fNEvents*1.e3,hz);
for( int i=0; i<fNTimers; i++ ){
if( i>0 ) fStatistics+=", ";
fStatistics+= Form("%s %.1f/%.1fms",fNames[i].Data(),fTotalRealTime[i]/fNEvents*1.e3, fTotalCPUTime[i]/fNEvents*1.e3 );
}
fStatistics+=")";
return fStatistics.Data();
}
void AliHLTComponentBenchmark::GetStatisticsData( Double_t* statistics, TString* names )
{
if( fNEvents<=0 ) return ;
statistics[0] = fNEvents;
statistics[1] = fTotalInput/fNEvents;
statistics[2] = fTotalOutput/fNEvents;
if( fNTimers<=0 ) return ;
for( int i=0; i<fNTimers; i++ ){
names[i] = fNames[i];
statistics[3+i] = fTotalRealTime[i]/fNEvents*1.e3;
statistics[4+i] = fTotalCPUTime[i]/fNEvents*1.e3;
}
return ;
}
AliHLTComponentBenchmark.cxx:1 AliHLTComponentBenchmark.cxx:2 AliHLTComponentBenchmark.cxx:3 AliHLTComponentBenchmark.cxx:4 AliHLTComponentBenchmark.cxx:5 AliHLTComponentBenchmark.cxx:6 AliHLTComponentBenchmark.cxx:7 AliHLTComponentBenchmark.cxx:8 AliHLTComponentBenchmark.cxx:9 AliHLTComponentBenchmark.cxx:10 AliHLTComponentBenchmark.cxx:11 AliHLTComponentBenchmark.cxx:12 AliHLTComponentBenchmark.cxx:13 AliHLTComponentBenchmark.cxx:14 AliHLTComponentBenchmark.cxx:15 AliHLTComponentBenchmark.cxx:16 AliHLTComponentBenchmark.cxx:17 AliHLTComponentBenchmark.cxx:18 AliHLTComponentBenchmark.cxx:19 AliHLTComponentBenchmark.cxx:20 AliHLTComponentBenchmark.cxx:21 AliHLTComponentBenchmark.cxx:22 AliHLTComponentBenchmark.cxx:23 AliHLTComponentBenchmark.cxx:24 AliHLTComponentBenchmark.cxx:25 AliHLTComponentBenchmark.cxx:26 AliHLTComponentBenchmark.cxx:27 AliHLTComponentBenchmark.cxx:28 AliHLTComponentBenchmark.cxx:29 AliHLTComponentBenchmark.cxx:30 AliHLTComponentBenchmark.cxx:31 AliHLTComponentBenchmark.cxx:32 AliHLTComponentBenchmark.cxx:33 AliHLTComponentBenchmark.cxx:34 AliHLTComponentBenchmark.cxx:35 AliHLTComponentBenchmark.cxx:36 AliHLTComponentBenchmark.cxx:37 AliHLTComponentBenchmark.cxx:38 AliHLTComponentBenchmark.cxx:39 AliHLTComponentBenchmark.cxx:40 AliHLTComponentBenchmark.cxx:41 AliHLTComponentBenchmark.cxx:42 AliHLTComponentBenchmark.cxx:43 AliHLTComponentBenchmark.cxx:44 AliHLTComponentBenchmark.cxx:45 AliHLTComponentBenchmark.cxx:46 AliHLTComponentBenchmark.cxx:47 AliHLTComponentBenchmark.cxx:48 AliHLTComponentBenchmark.cxx:49 AliHLTComponentBenchmark.cxx:50 AliHLTComponentBenchmark.cxx:51 AliHLTComponentBenchmark.cxx:52 AliHLTComponentBenchmark.cxx:53 AliHLTComponentBenchmark.cxx:54 AliHLTComponentBenchmark.cxx:55 AliHLTComponentBenchmark.cxx:56 AliHLTComponentBenchmark.cxx:57 AliHLTComponentBenchmark.cxx:58 AliHLTComponentBenchmark.cxx:59 AliHLTComponentBenchmark.cxx:60 AliHLTComponentBenchmark.cxx:61 AliHLTComponentBenchmark.cxx:62 AliHLTComponentBenchmark.cxx:63 AliHLTComponentBenchmark.cxx:64 AliHLTComponentBenchmark.cxx:65 AliHLTComponentBenchmark.cxx:66 AliHLTComponentBenchmark.cxx:67 AliHLTComponentBenchmark.cxx:68 AliHLTComponentBenchmark.cxx:69 AliHLTComponentBenchmark.cxx:70 AliHLTComponentBenchmark.cxx:71 AliHLTComponentBenchmark.cxx:72 AliHLTComponentBenchmark.cxx:73 AliHLTComponentBenchmark.cxx:74 AliHLTComponentBenchmark.cxx:75 AliHLTComponentBenchmark.cxx:76 AliHLTComponentBenchmark.cxx:77 AliHLTComponentBenchmark.cxx:78 AliHLTComponentBenchmark.cxx:79 AliHLTComponentBenchmark.cxx:80 AliHLTComponentBenchmark.cxx:81 AliHLTComponentBenchmark.cxx:82 AliHLTComponentBenchmark.cxx:83 AliHLTComponentBenchmark.cxx:84 AliHLTComponentBenchmark.cxx:85 AliHLTComponentBenchmark.cxx:86 AliHLTComponentBenchmark.cxx:87 AliHLTComponentBenchmark.cxx:88 AliHLTComponentBenchmark.cxx:89 AliHLTComponentBenchmark.cxx:90 AliHLTComponentBenchmark.cxx:91 AliHLTComponentBenchmark.cxx:92 AliHLTComponentBenchmark.cxx:93 AliHLTComponentBenchmark.cxx:94 AliHLTComponentBenchmark.cxx:95 AliHLTComponentBenchmark.cxx:96 AliHLTComponentBenchmark.cxx:97 AliHLTComponentBenchmark.cxx:98 AliHLTComponentBenchmark.cxx:99 AliHLTComponentBenchmark.cxx:100 AliHLTComponentBenchmark.cxx:101 AliHLTComponentBenchmark.cxx:102 AliHLTComponentBenchmark.cxx:103 AliHLTComponentBenchmark.cxx:104 AliHLTComponentBenchmark.cxx:105 AliHLTComponentBenchmark.cxx:106 AliHLTComponentBenchmark.cxx:107 AliHLTComponentBenchmark.cxx:108 AliHLTComponentBenchmark.cxx:109 AliHLTComponentBenchmark.cxx:110 AliHLTComponentBenchmark.cxx:111 AliHLTComponentBenchmark.cxx:112 AliHLTComponentBenchmark.cxx:113 AliHLTComponentBenchmark.cxx:114 AliHLTComponentBenchmark.cxx:115 AliHLTComponentBenchmark.cxx:116 AliHLTComponentBenchmark.cxx:117 AliHLTComponentBenchmark.cxx:118 AliHLTComponentBenchmark.cxx:119 AliHLTComponentBenchmark.cxx:120 AliHLTComponentBenchmark.cxx:121 AliHLTComponentBenchmark.cxx:122 AliHLTComponentBenchmark.cxx:123 AliHLTComponentBenchmark.cxx:124 AliHLTComponentBenchmark.cxx:125 AliHLTComponentBenchmark.cxx:126 AliHLTComponentBenchmark.cxx:127 AliHLTComponentBenchmark.cxx:128 AliHLTComponentBenchmark.cxx:129 AliHLTComponentBenchmark.cxx:130 AliHLTComponentBenchmark.cxx:131 AliHLTComponentBenchmark.cxx:132 AliHLTComponentBenchmark.cxx:133 AliHLTComponentBenchmark.cxx:134 AliHLTComponentBenchmark.cxx:135 AliHLTComponentBenchmark.cxx:136 AliHLTComponentBenchmark.cxx:137 AliHLTComponentBenchmark.cxx:138 AliHLTComponentBenchmark.cxx:139 AliHLTComponentBenchmark.cxx:140 AliHLTComponentBenchmark.cxx:141 AliHLTComponentBenchmark.cxx:142