Skip to content
Snippets Groups Projects
Commit 3064fc60 authored by Radovan Červený's avatar Radovan Červený
Browse files

separated custom frames into folder, used explicit template instantiation for hints

parent 67609e09
No related branches found
No related tags found
1 merge request!14BP_cervera3 - new measurements
Showing
with 167 additions and 28 deletions
...@@ -60,18 +60,13 @@ MeasurementResults MeasurementEngine::get_results ( ) const { ...@@ -60,18 +60,13 @@ MeasurementResults MeasurementEngine::get_results ( ) const {
return MeasurementResults ( frames ); return MeasurementResults ( frames );
} }
   
template < > template < typename Hint >
void MeasurementEngine::hint ( MemoryHint mh ) { void MeasurementEngine::hint ( Hint hint ) {
if ( ( frame_idx_stack.size ( ) == 0 ) || ( frames[frame_idx_stack.back ( )].type == measurements::Type::ROOT ) ) return; 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 ) ); Hint::frame_type::hint ( frame_idx_stack.back ( ), frames, std::move ( hint ) );
}
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 ) );
} }
   
template void MeasurementEngine::hint < MemoryHint > ( MemoryHint );
template void MeasurementEngine::hint < CounterHint > ( CounterHint );
} }
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#define MEASUREMENT_ENGINE_HPP_ #define MEASUREMENT_ENGINE_HPP_
   
#include "MeasurementTypes.hpp" #include "MeasurementTypes.hpp"
#include "MeasurementFrames.hpp" #include "MeasurementFrame.hpp"
#include "MeasurementResults.hpp" #include "MeasurementResults.hpp"
   
namespace measurements { namespace measurements {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
*/ */
   
#include <sstream> #include <sstream>
#include "MeasurementFrames.hpp" #include "MeasurementFrame.hpp"
   
namespace measurements { namespace measurements {
   
......
/*
* 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_ */
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include <ostream> #include <ostream>
#include "sax/SaxComposeInterface.h" #include "sax/SaxComposeInterface.h"
#include "MeasurementTypes.hpp" #include "MeasurementTypes.hpp"
#include "MeasurementFrames.hpp" #include "MeasurementFrame.hpp"
   
namespace measurements { namespace measurements {
   
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Author: Radovan Cerveny * Author: Radovan Cerveny
*/ */
   
#include "MeasurementFrames.hpp" #include "../MeasurementFrame.hpp"
   
namespace measurements { namespace measurements {
   
......
...@@ -2,20 +2,20 @@ ...@@ -2,20 +2,20 @@
* Author: Radovan Cerveny * Author: Radovan Cerveny
*/ */
   
#ifndef MEASUREMENT_FRAME_HPP_ #ifndef COUNTER_DATA_FRAME_HPP_
#define MEASUREMENT_FRAME_HPP_ #define COUNTER_DATA_FRAME_HPP_
   
#include <chrono>
#include <sstream>
#include <deque> #include <deque>
#include "sax/Token.h" #include "sax/Token.h"
#include "MeasurementTypes.hpp" #include "../MeasurementTypes.hpp"
   
namespace measurements { namespace measurements {
   
struct MeasurementFrame; struct MeasurementFrame;
struct CounterDataFrame;
   
struct CounterHint { struct CounterHint {
using frame_type = CounterDataFrame;
using value_type = long long int; using value_type = long long int;
enum class Type { enum class Type {
ADD, SUB, INC, DEC ADD, SUB, INC, DEC
...@@ -37,61 +37,6 @@ struct CounterDataFrame { ...@@ -37,61 +37,6 @@ struct CounterDataFrame {
}; };
   
std::ostream & operator <<( std::ostream &, const CounterDataFrame & ); 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_ */ #endif /* COUNTER_DATA_FRAME_HPP_ */
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Author: Radovan Cerveny * Author: Radovan Cerveny
*/ */
   
#include "MeasurementFrames.hpp" #include "../MeasurementFrame.hpp"
   
namespace measurements { namespace measurements {
   
......
/*
* 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_ */
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
*/ */
   
#include <sstream> #include <sstream>
#include "MeasurementFrames.hpp" #include "../MeasurementFrame.hpp"
   
using namespace std::chrono; using namespace std::chrono;
   
......
/*
* 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_ */
...@@ -34,16 +34,6 @@ void hint ( Hint hint ) { ...@@ -34,16 +34,6 @@ void hint ( Hint hint ) {
MeasurementEngine::INSTANCE.hint ( std::move ( hint ) ); MeasurementEngine::INSTANCE.hint ( std::move ( hint ) );
} }
   
template < > template void hint < MemoryHint > ( MemoryHint );
void hint ( MemoryHint hint ) { template void hint < CounterHint > ( CounterHint );
if ( MeasurementEngine::OPERATIONAL )
MeasurementEngine::INSTANCE.hint ( std::move ( hint ) );
}
template < >
void hint ( CounterHint hint ) {
if ( MeasurementEngine::OPERATIONAL )
MeasurementEngine::INSTANCE.hint ( std::move ( hint ) );
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment