From 3064fc6085f61637834dacb50603e91367dd01de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radovan=20=C4=8Cerven=C3=BD?= <radovan.cerveny@gmail.com> Date: Sat, 13 Feb 2016 00:46:20 +0100 Subject: [PATCH] separated custom frames into folder, used explicit template instantiation for hints --- .../src/measurements/MeasurementEngine.cpp | 15 +-- .../src/measurements/MeasurementEngine.hpp | 2 +- .../src/measurements/MeasurementFrame.cpp | 2 +- .../src/measurements/MeasurementFrame.hpp | 37 +++++++ .../src/measurements/MeasurementFrames.hpp | 97 ------------------- .../src/measurements/MeasurementResults.hpp | 2 +- .../{ => frames}/CounterDataFrame.cpp | 2 +- .../measurements/frames/CounterDataFrame.hpp | 42 ++++++++ .../{ => frames}/MemoryDataFrame.cpp | 2 +- .../measurements/frames/MemoryDataFrame.hpp | 43 ++++++++ .../{ => frames}/TimeDataFrame.cpp | 2 +- .../src/measurements/frames/TimeDataFrame.hpp | 32 ++++++ .../src/measurements/measurements.cpp | 14 +-- 13 files changed, 167 insertions(+), 125 deletions(-) create mode 100644 alib2measure/src/measurements/MeasurementFrame.hpp delete mode 100644 alib2measure/src/measurements/MeasurementFrames.hpp rename alib2measure/src/measurements/{ => frames}/CounterDataFrame.cpp (99%) create mode 100644 alib2measure/src/measurements/frames/CounterDataFrame.hpp rename alib2measure/src/measurements/{ => frames}/MemoryDataFrame.cpp (98%) create mode 100644 alib2measure/src/measurements/frames/MemoryDataFrame.hpp rename alib2measure/src/measurements/{ => frames}/TimeDataFrame.cpp (98%) create mode 100644 alib2measure/src/measurements/frames/TimeDataFrame.hpp diff --git a/alib2measure/src/measurements/MeasurementEngine.cpp b/alib2measure/src/measurements/MeasurementEngine.cpp index 24b4e744f5..0615258d58 100644 --- a/alib2measure/src/measurements/MeasurementEngine.cpp +++ b/alib2measure/src/measurements/MeasurementEngine.cpp @@ -60,18 +60,13 @@ MeasurementResults MeasurementEngine::get_results ( ) const { return MeasurementResults ( frames ); } -template < > -void MeasurementEngine::hint ( MemoryHint mh ) { +template < typename Hint > +void MeasurementEngine::hint ( Hint hint ) { if ( ( frame_idx_stack.size ( ) == 0 ) || ( frames[frame_idx_stack.back ( )].type == measurements::Type::ROOT ) ) return; - MemoryDataFrame::hint ( frame_idx_stack.back ( ), frames, std::move ( mh ) ); -} - -template < > -void MeasurementEngine::hint ( CounterHint ch ) { - if ( ( frame_idx_stack.size ( ) == 0 ) || ( frames[frame_idx_stack.back ( )].type == measurements::Type::ROOT ) ) return; - - CounterDataFrame::hint ( frame_idx_stack.back ( ), frames, std::move ( ch ) ); + Hint::frame_type::hint ( frame_idx_stack.back ( ), frames, std::move ( hint ) ); } +template void MeasurementEngine::hint < MemoryHint > ( MemoryHint ); +template void MeasurementEngine::hint < CounterHint > ( CounterHint ); } diff --git a/alib2measure/src/measurements/MeasurementEngine.hpp b/alib2measure/src/measurements/MeasurementEngine.hpp index fafe143787..721e101060 100644 --- a/alib2measure/src/measurements/MeasurementEngine.hpp +++ b/alib2measure/src/measurements/MeasurementEngine.hpp @@ -6,7 +6,7 @@ #define MEASUREMENT_ENGINE_HPP_ #include "MeasurementTypes.hpp" -#include "MeasurementFrames.hpp" +#include "MeasurementFrame.hpp" #include "MeasurementResults.hpp" namespace measurements { diff --git a/alib2measure/src/measurements/MeasurementFrame.cpp b/alib2measure/src/measurements/MeasurementFrame.cpp index 31198ad79b..31a8d9b1a4 100644 --- a/alib2measure/src/measurements/MeasurementFrame.cpp +++ b/alib2measure/src/measurements/MeasurementFrame.cpp @@ -3,7 +3,7 @@ */ #include <sstream> -#include "MeasurementFrames.hpp" +#include "MeasurementFrame.hpp" namespace measurements { diff --git a/alib2measure/src/measurements/MeasurementFrame.hpp b/alib2measure/src/measurements/MeasurementFrame.hpp new file mode 100644 index 0000000000..02d423dc24 --- /dev/null +++ b/alib2measure/src/measurements/MeasurementFrame.hpp @@ -0,0 +1,37 @@ +/* + * Author: Radovan Cerveny + */ + +#ifndef MEASUREMENT_FRAME_HPP_ +#define MEASUREMENT_FRAME_HPP_ + +#include <chrono> +#include <sstream> +#include <deque> +#include "sax/Token.h" +#include "MeasurementTypes.hpp" +#include "frames/TimeDataFrame.hpp" +#include "frames/MemoryDataFrame.hpp" +#include "frames/CounterDataFrame.hpp" + +namespace measurements { + +struct MeasurementFrame { + measurements::stealth_string name; + measurements::Type type; + unsigned parent_idx; + + measurements::stealth_vector < unsigned > sub_idxs; + + TimeDataFrame time; + MemoryDataFrame memory; + CounterDataFrame counter; + + MeasurementFrame ( measurements::stealth_string, measurements::Type, unsigned ); + static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); +}; + +std::ostream & operator <<( std::ostream &, const MeasurementFrame & ); +} + +#endif /* MEASUREMENT_FRAME_HPP_ */ diff --git a/alib2measure/src/measurements/MeasurementFrames.hpp b/alib2measure/src/measurements/MeasurementFrames.hpp deleted file mode 100644 index ac1d1a7bec..0000000000 --- a/alib2measure/src/measurements/MeasurementFrames.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Author: Radovan Cerveny - */ - -#ifndef MEASUREMENT_FRAME_HPP_ -#define MEASUREMENT_FRAME_HPP_ - -#include <chrono> -#include <sstream> -#include <deque> -#include "sax/Token.h" -#include "MeasurementTypes.hpp" - -namespace measurements { - -struct MeasurementFrame; - -struct CounterHint { - using value_type = long long int; - enum class Type { - ADD, SUB, INC, DEC - }; - - measurements::stealth_string name; - Type type; - value_type value; -}; - -struct CounterDataFrame { - measurements::stealth_map < measurements::stealth_string, CounterHint::value_type > counters; - measurements::stealth_map < measurements::stealth_string, CounterHint::value_type > real_counters; - - static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); - static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); - static void hint ( unsigned, measurements::stealth_vector < MeasurementFrame > &, CounterHint ); - static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); -}; - -std::ostream & operator <<( std::ostream &, const CounterDataFrame & ); - -struct MemoryHint { - enum class Type { - NEW, DELETE - }; - - Type type; - size_t size; -}; - -struct MemoryDataFrame { - size_t start_heap_usage; - size_t end_heap_usage; - size_t high_watermark; - - size_t current_heap_usage; - - static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); - static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); - static void hint ( unsigned, measurements::stealth_vector < MeasurementFrame > &, MemoryHint ); - static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); -}; - -std::ostream & operator <<( std::ostream &, const MemoryDataFrame & ); - -struct TimeDataFrame { - std::chrono::time_point < std::chrono::high_resolution_clock > start; - - std::chrono::microseconds duration; - std::chrono::microseconds real_duration; - - static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); - static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); - static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); -}; - -std::ostream & operator <<( std::ostream &, const std::chrono::microseconds & ); -std::ostream & operator <<( std::ostream &, const TimeDataFrame & ); - -struct MeasurementFrame { - measurements::stealth_string name; - measurements::Type type; - unsigned parent_idx; - - measurements::stealth_vector < unsigned > sub_idxs; - - TimeDataFrame time; - MemoryDataFrame memory; - CounterDataFrame counter; - - MeasurementFrame ( measurements::stealth_string, measurements::Type, unsigned ); - static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); -}; - -std::ostream & operator <<( std::ostream &, const MeasurementFrame & ); -} - -#endif /* MEASUREMENT_FRAME_HPP_ */ diff --git a/alib2measure/src/measurements/MeasurementResults.hpp b/alib2measure/src/measurements/MeasurementResults.hpp index 2b8517fb47..699e1e019b 100644 --- a/alib2measure/src/measurements/MeasurementResults.hpp +++ b/alib2measure/src/measurements/MeasurementResults.hpp @@ -8,7 +8,7 @@ #include <ostream> #include "sax/SaxComposeInterface.h" #include "MeasurementTypes.hpp" -#include "MeasurementFrames.hpp" +#include "MeasurementFrame.hpp" namespace measurements { diff --git a/alib2measure/src/measurements/CounterDataFrame.cpp b/alib2measure/src/measurements/frames/CounterDataFrame.cpp similarity index 99% rename from alib2measure/src/measurements/CounterDataFrame.cpp rename to alib2measure/src/measurements/frames/CounterDataFrame.cpp index bc58f63a3a..9355be32e7 100644 --- a/alib2measure/src/measurements/CounterDataFrame.cpp +++ b/alib2measure/src/measurements/frames/CounterDataFrame.cpp @@ -2,7 +2,7 @@ * Author: Radovan Cerveny */ -#include "MeasurementFrames.hpp" +#include "../MeasurementFrame.hpp" namespace measurements { diff --git a/alib2measure/src/measurements/frames/CounterDataFrame.hpp b/alib2measure/src/measurements/frames/CounterDataFrame.hpp new file mode 100644 index 0000000000..f2e3bf3b48 --- /dev/null +++ b/alib2measure/src/measurements/frames/CounterDataFrame.hpp @@ -0,0 +1,42 @@ +/* + * Author: Radovan Cerveny + */ + +#ifndef COUNTER_DATA_FRAME_HPP_ +#define COUNTER_DATA_FRAME_HPP_ + +#include <deque> +#include "sax/Token.h" +#include "../MeasurementTypes.hpp" + +namespace measurements { + +struct MeasurementFrame; +struct CounterDataFrame; + +struct CounterHint { + using frame_type = CounterDataFrame; + using value_type = long long int; + enum class Type { + ADD, SUB, INC, DEC + }; + + measurements::stealth_string name; + Type type; + value_type value; +}; + +struct CounterDataFrame { + measurements::stealth_map < measurements::stealth_string, CounterHint::value_type > counters; + measurements::stealth_map < measurements::stealth_string, CounterHint::value_type > real_counters; + + static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); + static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); + static void hint ( unsigned, measurements::stealth_vector < MeasurementFrame > &, CounterHint ); + static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); +}; + +std::ostream & operator <<( std::ostream &, const CounterDataFrame & ); +} + +#endif /* COUNTER_DATA_FRAME_HPP_ */ diff --git a/alib2measure/src/measurements/MemoryDataFrame.cpp b/alib2measure/src/measurements/frames/MemoryDataFrame.cpp similarity index 98% rename from alib2measure/src/measurements/MemoryDataFrame.cpp rename to alib2measure/src/measurements/frames/MemoryDataFrame.cpp index a30185a0e4..37fe201ce1 100644 --- a/alib2measure/src/measurements/MemoryDataFrame.cpp +++ b/alib2measure/src/measurements/frames/MemoryDataFrame.cpp @@ -2,7 +2,7 @@ * Author: Radovan Cerveny */ -#include "MeasurementFrames.hpp" +#include "../MeasurementFrame.hpp" namespace measurements { diff --git a/alib2measure/src/measurements/frames/MemoryDataFrame.hpp b/alib2measure/src/measurements/frames/MemoryDataFrame.hpp new file mode 100644 index 0000000000..91f45516ae --- /dev/null +++ b/alib2measure/src/measurements/frames/MemoryDataFrame.hpp @@ -0,0 +1,43 @@ +/* + * Author: Radovan Cerveny + */ + +#ifndef MEMORY_DATA_FRAME_HPP_ +#define MEMORY_DATA_FRAME_HPP_ + +#include <deque> +#include "sax/Token.h" +#include "../MeasurementTypes.hpp" + +namespace measurements { + +struct MeasurementFrame; +struct MemoryDataFrame; + +struct MemoryHint { + using frame_type = MemoryDataFrame; + enum class Type { + NEW, DELETE + }; + + Type type; + size_t size; +}; + +struct MemoryDataFrame { + size_t start_heap_usage; + size_t end_heap_usage; + size_t high_watermark; + + size_t current_heap_usage; + + static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); + static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); + static void hint ( unsigned, measurements::stealth_vector < MeasurementFrame > &, MemoryHint ); + static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); +}; + +std::ostream & operator <<( std::ostream &, const MemoryDataFrame & ); +} + +#endif /* MEMORY_DATA_FRAME_HPP_ */ diff --git a/alib2measure/src/measurements/TimeDataFrame.cpp b/alib2measure/src/measurements/frames/TimeDataFrame.cpp similarity index 98% rename from alib2measure/src/measurements/TimeDataFrame.cpp rename to alib2measure/src/measurements/frames/TimeDataFrame.cpp index 7d39cb51c9..ea46d97582 100644 --- a/alib2measure/src/measurements/TimeDataFrame.cpp +++ b/alib2measure/src/measurements/frames/TimeDataFrame.cpp @@ -3,7 +3,7 @@ */ #include <sstream> -#include "MeasurementFrames.hpp" +#include "../MeasurementFrame.hpp" using namespace std::chrono; diff --git a/alib2measure/src/measurements/frames/TimeDataFrame.hpp b/alib2measure/src/measurements/frames/TimeDataFrame.hpp new file mode 100644 index 0000000000..5213c1a10d --- /dev/null +++ b/alib2measure/src/measurements/frames/TimeDataFrame.hpp @@ -0,0 +1,32 @@ +/* + * Author: Radovan Cerveny + */ + +#ifndef TIME_DATA_FRAME_HPP_ +#define TIME_DATA_FRAME_HPP_ + +#include <chrono> +#include <deque> +#include "sax/Token.h" +#include "../MeasurementTypes.hpp" + +namespace measurements { + +struct MeasurementFrame; + +struct TimeDataFrame { + std::chrono::time_point < std::chrono::high_resolution_clock > start; + + std::chrono::microseconds duration; + std::chrono::microseconds real_duration; + + static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); + static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); + static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); +}; + +std::ostream & operator <<( std::ostream &, const std::chrono::microseconds & ); +std::ostream & operator <<( std::ostream &, const TimeDataFrame & ); +} + +#endif /* TIME_DATA_FRAME_HPP_ */ diff --git a/alib2measure/src/measurements/measurements.cpp b/alib2measure/src/measurements/measurements.cpp index 906abcd190..8c3ca967ee 100644 --- a/alib2measure/src/measurements/measurements.cpp +++ b/alib2measure/src/measurements/measurements.cpp @@ -34,16 +34,6 @@ void hint ( Hint hint ) { MeasurementEngine::INSTANCE.hint ( std::move ( hint ) ); } -template < > -void hint ( MemoryHint hint ) { - if ( MeasurementEngine::OPERATIONAL ) - MeasurementEngine::INSTANCE.hint ( std::move ( hint ) ); -} - -template < > -void hint ( CounterHint hint ) { - if ( MeasurementEngine::OPERATIONAL ) - MeasurementEngine::INSTANCE.hint ( std::move ( hint ) ); -} - +template void hint < MemoryHint > ( MemoryHint ); +template void hint < CounterHint > ( CounterHint ); } -- GitLab