GCC Code Coverage Report


Directory: ./
File: src/utilities/stopwatch.h
Date: 2023-04-27 00:55:30
Exec Total Coverage
Lines: 5 5 100.0%
Functions: 3 3 100.0%
Branches: 4 8 50.0%

Line Branch Exec Source
1 #ifndef LYTHON_UTILITIES_CHRONO_HEADER
2 #define LYTHON_UTILITIES_CHRONO_HEADER
3
4 #include <chrono>
5 #include <ratio>
6
7 namespace lython {
8 template <typename T = double, typename Unit = std::chrono::milliseconds>
9 class StopWatch {
10 public:
11 using TimePoint = std::chrono::high_resolution_clock::time_point;
12 using Clock = std::chrono::high_resolution_clock;
13 using Duration = std::chrono::duration<T>;
14
15 TimePoint const start = Clock::now();
16
17 double stop() const {
18 171417 TimePoint end = Clock::now();
19
1/2
✓ Branch 1 taken 171417 times.
✗ Branch 2 not taken.
342834 return StopWatch::diff(start, end);
20 }
21
22 static double diff(TimePoint start, TimePoint end) {
23
2/4
✓ Branch 1 taken 171419 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 171419 times.
✗ Branch 5 not taken.
171419 Duration time_delta = end - start;
24
1/2
✓ Branch 1 taken 171419 times.
✗ Branch 2 not taken.
171419 auto delta = std::chrono::duration_cast<Unit>(time_delta);
25 171419 return double(delta.count());
26 }
27
28 StopWatch operator=(StopWatch p) { return StopWatch(p); }
29
30 StopWatch(const StopWatch& p): start(p.start) {}
31
32 StopWatch() = default;
33 };
34
35 } // namespace lython
36
37 #endif
38