Skip to content

Commit 7823117

Browse files
agurfinkelNikolajBjorner
authored andcommitted
Restore expected behavior to stopwatch
1 parent e816d16 commit 7823117

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

src/util/stopwatch.h

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,8 @@ class stopwatch
3030

3131
clock_t m_start;
3232
duration_t m_elapsed;
33-
#if Z3DEBUG
3433
bool m_running = false;
35-
#endif
36-
34+
3735
// FIXME: just use auto with VS 2015+
3836
static clock_t get() {
3937
return std::chrono::steady_clock::now();
@@ -50,27 +48,32 @@ class stopwatch
5048

5149
void reset() {
5250
m_elapsed = duration_t::zero();
53-
DEBUG_CODE(m_running = false;);
5451
}
5552

5653
void start() {
57-
// SASSERT(!m_running);
58-
DEBUG_CODE(m_running = true;);
59-
m_start = get();
54+
if (!m_running) {
55+
m_start = get();
56+
m_running = true;
57+
}
6058
}
6159

6260
void stop() {
63-
// SASSERT(m_running);
64-
DEBUG_CODE(m_running = false;);
65-
m_elapsed += get() - m_start;
61+
if (m_running) {
62+
m_elapsed += get() - m_start;
63+
m_running = false;
64+
}
6665
}
6766

6867
double get_seconds() const {
68+
if (m_running) {
69+
const_cast<stopwatch*>(this)->stop();
70+
const_cast<stopwatch*>(this)->start();
71+
}
6972
return std::chrono::duration_cast<std::chrono::milliseconds>(m_elapsed).count() / 1000.0;
7073
}
7174

7275
double get_current_seconds() const {
73-
return std::chrono::duration_cast<std::chrono::milliseconds>(get() - m_start).count() / 1000.0;
76+
return get_seconds();
7477
}
7578
};
7679

0 commit comments

Comments
 (0)