From d5a310e4b3251410d4afd58ccea5ec7f0cb13d5f Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 6 Oct 2003 15:02:31 +0000 Subject: [PATCH] Implement the NamedRegionTimer class git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8889 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/Timer.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/Support/Timer.cpp b/lib/Support/Timer.cpp index 98001287d9a..2542a6a2b4c 100644 --- a/lib/Support/Timer.cpp +++ b/lib/Support/Timer.cpp @@ -16,6 +16,7 @@ #include #include #include +#include // 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 NamedTimers; + + std::map::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 -- 2.34.1