summaryrefslogtreecommitdiff
path: root/lib/Support/Timer.cpp
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2004-12-27 08:03:04 +0000
committerReid Spencer <rspencer@reidspencer.com>2004-12-27 08:03:04 +0000
commitaeb47b8db9246fc0d5d6e437225fe84524da9202 (patch)
treeb7788d238b911787483bc7f07d291e635cdc1dee /lib/Support/Timer.cpp
parent51163306ab0c51f1103139200cadb8e3fa6bfd18 (diff)
downloadllvm-aeb47b8db9246fc0d5d6e437225fe84524da9202.tar.gz
llvm-aeb47b8db9246fc0d5d6e437225fe84524da9202.tar.bz2
llvm-aeb47b8db9246fc0d5d6e437225fe84524da9202.tar.xz
Fix a bug that made the nightly tester *really* slow. During changes for
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
Diffstat (limited to 'lib/Support/Timer.cpp')
-rw-r--r--lib/Support/Timer.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/Support/Timer.cpp b/lib/Support/Timer.cpp
index 47d696804a..4b273b02ff 100644
--- a/lib/Support/Timer.cpp
+++ b/lib/Support/Timer.cpp
@@ -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)