00001 #include "Utilities/Timing/interface/TimerStack.h" 00002 void TimerStack::push( std::string name, Type type ){ 00003 bool linuxCpuOn = (type == DetailedMonitoring); 00004 if( (*TimingReport::current())["firstcall_"+name].counter == 0) 00005 stack.push(new TimeMe("firstcall_"+name,linuxCpuOn)); 00006 else 00007 stack.push(new TimeMe(name,linuxCpuOn)); 00008 } 00009 00010 void TimerStack::push( TimerStack::Timer& timer, Type type ){ 00011 bool linuxCpuOn = (type == DetailedMonitoring); 00012 if( timer.first().counter == 0) 00013 stack.push(new TimeMe(timer.first(), linuxCpuOn)); 00014 else 00015 stack.push(new TimeMe(timer.main(), linuxCpuOn)); 00016 } 00017 00018 void TimerStack::pop( ){ 00019 if (!stack.empty()) { 00020 delete stack.top(); 00021 stack.pop(); 00022 } 00023 } 00024 00025 void TimerStack::clear_stack(){ 00026 while(!stack.empty()) pop(); 00027 } 00028 00029 void TimerStack::pop_and_push(std::string name, Type type ) { 00030 pop(); 00031 push(name,type); 00032 } 00033 void TimerStack::pop_and_push( TimerStack::Timer& timer, Type type ) { 00034 pop(); 00035 push(timer,type); 00036 } 00037 00038 void TimerStack::benchmark( std::string name, int n ) 00039 { 00040 push(name,FastMonitoring); 00041 float a(1.0009394); 00042 float b(0.000123); 00043 for(int i=0; i < n; i++) b *= a; 00044 pop(); 00045 }