Implement the NamedRegionTimer class

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8889 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-10-06 15:02:31 +00:00
parent aacd3c8d86
commit d5a310e4b3

View File

@ -16,6 +16,7 @@
#include <algorithm>
#include <functional>
#include <fstream>
#include <map>
// getLibSupportInfoOutputFilename - This ugly hack is brought to you courtesy
// of constructor/destructor ordering being unspecified by C++. Basically the
@ -178,6 +179,23 @@ void Timer::addPeakMemoryMeasurement() {
(*I)->PeakMem = std::max((*I)->PeakMem, MemUsed-(*I)->PeakMemBase);
}
//===----------------------------------------------------------------------===//
// NamedRegionTimer Implementation
//===----------------------------------------------------------------------===//
static Timer &getNamedRegionTimer(const std::string &Name) {
static std::map<std::string, Timer> NamedTimers;
std::map<std::string, Timer>::iterator I = NamedTimers.lower_bound(Name);
if (I != NamedTimers.end() && I->first == Name)
return I->second;
return NamedTimers.insert(I, std::make_pair(Name, Timer(Name)))->second;
}
NamedRegionTimer::NamedRegionTimer(const std::string &Name)
: TimeRegion(getNamedRegionTimer(Name)) {}
//===----------------------------------------------------------------------===//
// TimerGroup Implementation