aboutsummaryrefslogtreecommitdiff
path: root/tests/framework/instruments/WallClockTimer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/framework/instruments/WallClockTimer.cpp')
-rw-r--r--tests/framework/instruments/WallClockTimer.cpp42
1 files changed, 34 insertions, 8 deletions
diff --git a/tests/framework/instruments/WallClockTimer.cpp b/tests/framework/instruments/WallClockTimer.cpp
index 6c69360236..f309efca1c 100644
--- a/tests/framework/instruments/WallClockTimer.cpp
+++ b/tests/framework/instruments/WallClockTimer.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -32,26 +32,52 @@ namespace test
{
namespace framework
{
-std::string WallClockTimer::id() const
+template <bool output_timestamps>
+std::string WallClock<output_timestamps>::id() const
{
- return "Wall clock";
+ if(output_timestamps)
+ {
+ return "Wall clock timestamps";
+ }
+ else
+ {
+ return "Wall clock";
+ }
}
-void WallClockTimer::start()
+template <bool output_timestamps>
+void WallClock<output_timestamps>::start()
{
_start = std::chrono::high_resolution_clock::now();
}
-void WallClockTimer::stop()
+template <bool output_timestamps>
+void WallClock<output_timestamps>::stop()
{
_stop = std::chrono::high_resolution_clock::now();
}
-Instrument::MeasurementsMap WallClockTimer::measurements() const
+template <bool output_timestamps>
+Instrument::MeasurementsMap WallClock<output_timestamps>::measurements() const
{
- const auto delta = std::chrono::duration_cast<std::chrono::microseconds>(_stop - _start);
- return MeasurementsMap{ { "Wall clock time", Measurement(delta.count() / _scale_factor, _unit) } };
+ MeasurementsMap measurements;
+ if(output_timestamps)
+ {
+ // _start / _stop are in ns, so divide by an extra 1000:
+ measurements.emplace("[start]Wall clock time", Measurement(_start.time_since_epoch().count() / static_cast<uint64_t>(1000 * _scale_factor), _unit));
+ measurements.emplace("[end]Wall clock time", Measurement(_stop.time_since_epoch().count() / static_cast<uint64_t>(1000 * _scale_factor), _unit));
+ }
+ else
+ {
+ const auto delta = std::chrono::duration_cast<std::chrono::microseconds>(_stop - _start);
+ measurements.emplace("Wall clock time", Measurement(delta.count() / _scale_factor, _unit));
+ }
+ return measurements;
}
+
+template class WallClock<true>;
+template class WallClock<false>;
+
} // namespace framework
} // namespace test
} // namespace arm_compute