Fix a bug that made the nightly tester *really* slow. During changes for
authorReid Spencer <rspencer@reidspencer.com>
Mon, 27 Dec 2004 08:03:04 +0000 (08:03 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Mon, 27 Dec 2004 08:03:04 +0000 (08:03 +0000)
portability, the --track-space option was inadvertently ignored. This patch
fixes that so that sys::Process::GetMallocUsage() is only invoked if the
--track-spaces option is given. Apparently the mallinfo() call that
GetMallocUsage() uses is *very* slow, especially when processing very large
modules like projects/llvm-test/MultiSource/Applications/kimwitu++.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19163 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/Timer.cpp

index 47d696804a77b65f2c79b3cc22f16737f9210a17..4b273b02ff9184f3333840ff697189dc3783961f 100644 (file)
@@ -93,6 +93,12 @@ Timer::~Timer() {
   }
 }
 
+static inline long getMemUsage() {
+  if (TrackSpace)
+    return sys::Process::GetMallocUsage();
+  return 0;
+}
+
 struct TimeRecord {
   double Elapsed, UserTime, SystemTime;
   long MemUsed;
@@ -108,9 +114,9 @@ static TimeRecord getTimeRecord(bool Start) {
   long MemUsed = 0;
   if (Start) {
     sys::Process::GetTimeUsage(now,user,sys);
-    MemUsed = sys::Process::GetMallocUsage();
+    MemUsed = getMemUsage();
   } else {
-    MemUsed = sys::Process::GetMallocUsage();
+    MemUsed = getMemUsage();
     sys::Process::GetTimeUsage(now,user,sys);
   }
 
@@ -165,7 +171,7 @@ void Timer::sum(const Timer &T) {
 /// currently active timers, which will be printed when the timer group prints
 ///
 void Timer::addPeakMemoryMeasurement() {
-  long MemUsed = sys::Process::GetMallocUsage();
+  long MemUsed = getMemUsage();
 
   for (std::vector<Timer*>::iterator I = ActiveTimers.begin(),
          E = ActiveTimers.end(); I != E; ++I)