From 9f1de535a32e0b554f03c10d5ff4aedacc6d35bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radovan=20=C4=8Cerven=C3=BD?= <radovan.cerveny@gmail.com> Date: Tue, 26 Jan 2016 21:19:55 +0100 Subject: [PATCH] introduced a way of printing results --- .../src/measurements/MeasurementEngine.hpp | 7 ++++- alib2algo/src/measurements/Measurements.cpp | 4 +-- alib2algo/src/measurements/Measurements.hpp | 4 +-- .../measurements/TimeMeasurementEngine.cpp | 26 +++++++++++++------ .../measurements/TimeMeasurementEngine.hpp | 8 +++++- .../measurements/MeasurementsTest.cpp | 3 ++- 6 files changed, 37 insertions(+), 15 deletions(-) diff --git a/alib2algo/src/measurements/MeasurementEngine.hpp b/alib2algo/src/measurements/MeasurementEngine.hpp index 85961b7eca..f9b9b815d2 100644 --- a/alib2algo/src/measurements/MeasurementEngine.hpp +++ b/alib2algo/src/measurements/MeasurementEngine.hpp @@ -5,6 +5,7 @@ #ifndef MEASUREMENT_ENGINE_HPP_ #define MEASUREMENT_ENGINE_HPP_ +#include <ostream> #include "MeasurementTypes.hpp" namespace measurements { @@ -13,7 +14,11 @@ class MeasurementEngine { public: virtual void push_measurement_frame ( std::string, measurements::Type ) = 0; virtual void pop_measurement_frame ( ) = 0; - virtual void get_results ( ) = 0; + + virtual void print_as_list ( std::ostream & ) = 0; + virtual void print_as_tree ( std::ostream & ) = 0; + virtual void print_as_xml ( std::ostream & ) = 0; + virtual ~MeasurementEngine ( ) = default; }; diff --git a/alib2algo/src/measurements/Measurements.cpp b/alib2algo/src/measurements/Measurements.cpp index c0cdd8012e..c81a45ab6f 100644 --- a/alib2algo/src/measurements/Measurements.cpp +++ b/alib2algo/src/measurements/Measurements.cpp @@ -40,9 +40,9 @@ void Measurements::end ( ) { me->pop_measurement_frame ( ); } -void Measurements::print ( ) { +void Measurements::print ( std::ostream & os ) { for ( auto me : INSTANCE.measurement_engines ) - me->get_results ( ); + me->print_as_list ( os ); } } diff --git a/alib2algo/src/measurements/Measurements.hpp b/alib2algo/src/measurements/Measurements.hpp index 05b3761ede..07b6e5885a 100644 --- a/alib2algo/src/measurements/Measurements.hpp +++ b/alib2algo/src/measurements/Measurements.hpp @@ -5,12 +5,12 @@ #ifndef MEASUREMENTS_HPP_ #define MEASUREMENTS_HPP_ +#include <ostream> #include <string> #include <vector> #include "MeasurementTypes.hpp" #include "MeasurementEngine.hpp" - namespace measurements { class Measurements { @@ -26,7 +26,7 @@ private: public: static void start ( std::string, measurements::Type ); static void end ( ); - static void print ( ); + static void print ( std::ostream & ); }; } diff --git a/alib2algo/src/measurements/TimeMeasurementEngine.cpp b/alib2algo/src/measurements/TimeMeasurementEngine.cpp index 212db55b33..126599dfaa 100644 --- a/alib2algo/src/measurements/TimeMeasurementEngine.cpp +++ b/alib2algo/src/measurements/TimeMeasurementEngine.cpp @@ -34,16 +34,26 @@ void TimeMeasurementEngine::pop_measurement_frame ( ) { results.emplace_back ( std::move ( current_frame ) ); } -void TimeMeasurementEngine::get_results ( ) { - for ( auto frame : results ) { - std::cout << frame.frame_name << std::endl; - std::cout << frame.duration << ' ' << frame.real_duration << std::endl; +void TimeMeasurementEngine::print_as_list ( std::ostream & os ) { + print_as_list ( os, results.size ( ) - 1 ); + os << std::endl; +} - for ( unsigned idx : frame.sub_frames ) - std::cout << idx << ' '; +void TimeMeasurementEngine::print_as_list ( std::ostream & os, unsigned idx ) { + TimeMeasurementFrame & tmf = results[idx]; - std::cout << std::endl; - } + if ( idx != results.size ( ) - 1 ) os << ", "; + + os << std::make_tuple ( idx, tmf.frame_name, ( unsigned ) tmf.frame_type, tmf.duration, tmf.real_duration, tmf.sub_frames ); + + for ( unsigned sub_idx : tmf.sub_frames ) + print_as_list ( os, sub_idx ); +} + +void TimeMeasurementEngine::print_as_tree ( std::ostream & ) { +} + +void TimeMeasurementEngine::print_as_xml ( std::ostream & ) { } } diff --git a/alib2algo/src/measurements/TimeMeasurementEngine.hpp b/alib2algo/src/measurements/TimeMeasurementEngine.hpp index f15e9bda1c..053568a1fe 100644 --- a/alib2algo/src/measurements/TimeMeasurementEngine.hpp +++ b/alib2algo/src/measurements/TimeMeasurementEngine.hpp @@ -8,6 +8,7 @@ #include <string> #include <chrono> #include <vector> +#include <ostream> #include "MeasurementEngine.hpp" namespace measurements { @@ -27,10 +28,15 @@ private: std::vector < TimeMeasurementFrame > frames; std::vector < TimeMeasurementFrame > results; + void print_as_list ( std::ostream &, unsigned ); + public: void push_measurement_frame ( std::string, measurements::Type ); void pop_measurement_frame ( ); - void get_results ( ); + + void print_as_list ( std::ostream & ); + void print_as_tree ( std::ostream & ); + void print_as_xml ( std::ostream & ); }; } diff --git a/alib2algo/test-src/measurements/MeasurementsTest.cpp b/alib2algo/test-src/measurements/MeasurementsTest.cpp index 6bbc1c540d..b42318da27 100644 --- a/alib2algo/test-src/measurements/MeasurementsTest.cpp +++ b/alib2algo/test-src/measurements/MeasurementsTest.cpp @@ -36,5 +36,6 @@ void MeasurementsTest::testMeasurements ( ) { std::this_thread::sleep_for ( std::chrono::milliseconds ( 80 ) ); measurements::Measurements::end ( ); measurements::Measurements::end ( ); - measurements::Measurements::print ( ); + + measurements::Measurements::print ( std::cout ); } -- GitLab