aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
authorCristian Cadar <c.cadar@imperial.ac.uk>2015-04-02 17:12:14 +0100
committerCristian Cadar <c.cadar@imperial.ac.uk>2015-04-02 17:12:14 +0100
commitd8f69a660f0477abdd20d96b7172113c81940c48 (patch)
tree9ad1e03da4e7e497210fe33463854fe0fab1eb60 /lib
parente89cd9b7933fb88138d29edc61eeb5718a318f99 (diff)
parent78946863d6d44475bb3363e07587fedb053d65d5 (diff)
downloadklee-d8f69a660f0477abdd20d96b7172113c81940c48.tar.gz
Merge pull request #209 from erakadjiev/timestamp_optimize
Cleaner, more efficient timestamps
Diffstat (limited to 'lib')
-rw-r--r--lib/Core/TimingSolver.cpp23
-rw-r--r--lib/Support/Time.cpp10
-rw-r--r--lib/Support/Timer.cpp10
3 files changed, 20 insertions, 23 deletions
diff --git a/lib/Core/TimingSolver.cpp b/lib/Core/TimingSolver.cpp
index 037b23f3..b70bcbef 100644
--- a/lib/Core/TimingSolver.cpp
+++ b/lib/Core/TimingSolver.cpp
@@ -13,10 +13,11 @@
#include "klee/ExecutionState.h"
#include "klee/Solver.h"
#include "klee/Statistics.h"
+#include "klee/Internal/System/Time.h"
#include "CoreStats.h"
-#include "llvm/Support/Process.h"
+#include "llvm/Support/TimeValue.h"
using namespace klee;
using namespace llvm;
@@ -31,15 +32,14 @@ bool TimingSolver::evaluate(const ExecutionState& state, ref<Expr> expr,
return true;
}
- sys::TimeValue now(0,0),user(0,0),delta(0,0),sys(0,0);
- sys::Process::GetTimeUsage(now,user,sys);
+ sys::TimeValue now = util::getWallTimeVal();
if (simplifyExprs)
expr = state.constraints.simplifyExpr(expr);
bool success = solver->evaluate(Query(state.constraints, expr), result);
- sys::Process::GetTimeUsage(delta,user,sys);
+ sys::TimeValue delta = util::getWallTimeVal();
delta -= now;
stats::solverTime += delta.usec();
state.queryCost += delta.usec()/1000000.;
@@ -55,15 +55,14 @@ bool TimingSolver::mustBeTrue(const ExecutionState& state, ref<Expr> expr,
return true;
}
- sys::TimeValue now(0,0),user(0,0),delta(0,0),sys(0,0);
- sys::Process::GetTimeUsage(now,user,sys);
+ sys::TimeValue now = util::getWallTimeVal();
if (simplifyExprs)
expr = state.constraints.simplifyExpr(expr);
bool success = solver->mustBeTrue(Query(state.constraints, expr), result);
- sys::Process::GetTimeUsage(delta,user,sys);
+ sys::TimeValue delta = util::getWallTimeVal();
delta -= now;
stats::solverTime += delta.usec();
state.queryCost += delta.usec()/1000000.;
@@ -102,15 +101,14 @@ bool TimingSolver::getValue(const ExecutionState& state, ref<Expr> expr,
return true;
}
- sys::TimeValue now(0,0),user(0,0),delta(0,0),sys(0,0);
- sys::Process::GetTimeUsage(now,user,sys);
+ sys::TimeValue now = util::getWallTimeVal();
if (simplifyExprs)
expr = state.constraints.simplifyExpr(expr);
bool success = solver->getValue(Query(state.constraints, expr), result);
- sys::Process::GetTimeUsage(delta,user,sys);
+ sys::TimeValue delta = util::getWallTimeVal();
delta -= now;
stats::solverTime += delta.usec();
state.queryCost += delta.usec()/1000000.;
@@ -127,14 +125,13 @@ TimingSolver::getInitialValues(const ExecutionState& state,
if (objects.empty())
return true;
- sys::TimeValue now(0,0),user(0,0),delta(0,0),sys(0,0);
- sys::Process::GetTimeUsage(now,user,sys);
+ sys::TimeValue now = util::getWallTimeVal();
bool success = solver->getInitialValues(Query(state.constraints,
ConstantExpr::alloc(0, Expr::Bool)),
objects, result);
- sys::Process::GetTimeUsage(delta,user,sys);
+ sys::TimeValue delta = util::getWallTimeVal();
delta -= now;
stats::solverTime += delta.usec();
state.queryCost += delta.usec()/1000000.;
diff --git a/lib/Support/Time.cpp b/lib/Support/Time.cpp
index 909e07da..be5eaf18 100644
--- a/lib/Support/Time.cpp
+++ b/lib/Support/Time.cpp
@@ -10,6 +10,7 @@
#include "klee/Config/Version.h"
#include "klee/Internal/System/Time.h"
+#include "llvm/Support/TimeValue.h"
#include "llvm/Support/Process.h"
using namespace llvm;
@@ -22,7 +23,10 @@ double util::getUserTime() {
}
double util::getWallTime() {
- sys::TimeValue now(0,0),user(0,0),sys(0,0);
- sys::Process::GetTimeUsage(now,user,sys);
- return (now.seconds() + (double) now.nanoseconds() * 1e-9);
+ sys::TimeValue now = getWallTimeVal();
+ return (now.seconds() + ((double) now.nanoseconds() * 1e-9));
+}
+
+sys::TimeValue util::getWallTimeVal() {
+ return sys::TimeValue::now();
}
diff --git a/lib/Support/Timer.cpp b/lib/Support/Timer.cpp
index c61a90a3..da969810 100644
--- a/lib/Support/Timer.cpp
+++ b/lib/Support/Timer.cpp
@@ -10,19 +10,15 @@
#include "klee/Config/Version.h"
#include "klee/Internal/Support/Timer.h"
-#include "llvm/Support/Process.h"
+#include "klee/Internal/System/Time.h"
using namespace klee;
using namespace llvm;
WallTimer::WallTimer() {
- sys::TimeValue now(0,0),user(0,0),sys(0,0);
- sys::Process::GetTimeUsage(now,user,sys);
- startMicroseconds = now.usec();
+ startMicroseconds = util::getWallTimeVal().usec();
}
uint64_t WallTimer::check() {
- sys::TimeValue now(0,0),user(0,0),sys(0,0);
- sys::Process::GetTimeUsage(now,user,sys);
- return now.usec() - startMicroseconds;
+ return util::getWallTimeVal().usec() - startMicroseconds;
}