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 {
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 );
}
......@@ -6,7 +6,7 @@
#define MEASUREMENT_ENGINE_HPP_
 
#include "MeasurementTypes.hpp"
#include "MeasurementFrames.hpp"
#include "MeasurementFrame.hpp"
#include "MeasurementResults.hpp"
 
namespace measurements {
......
......@@ -3,7 +3,7 @@
*/
 
#include <sstream>
#include "MeasurementFrames.hpp"
#include "MeasurementFrame.hpp"
 
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 @@
#include <ostream>
#include "sax/SaxComposeInterface.h"
#include "MeasurementTypes.hpp"
#include "MeasurementFrames.hpp"
#include "MeasurementFrame.hpp"
 
namespace measurements {
 
......
......@@ -2,7 +2,7 @@
* Author: Radovan Cerveny
*/
 
#include "MeasurementFrames.hpp"
#include "../MeasurementFrame.hpp"
 
namespace measurements {
 
......
......@@ -2,20 +2,20 @@
* Author: Radovan Cerveny
*/
 
#ifndef MEASUREMENT_FRAME_HPP_
#define MEASUREMENT_FRAME_HPP_
#ifndef COUNTER_DATA_FRAME_HPP_
#define COUNTER_DATA_FRAME_HPP_
 
#include <chrono>
#include <sstream>
#include <deque>
#include "sax/Token.h"
#include "MeasurementTypes.hpp"
#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
......@@ -37,61 +37,6 @@ struct 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 @@
* Author: Radovan Cerveny
*/
 
#include "MeasurementFrames.hpp"
#include "../MeasurementFrame.hpp"
 
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 @@
*/
 
#include <sstream>
#include "MeasurementFrames.hpp"
#include "../MeasurementFrame.hpp"
 
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 ) {
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 );
}
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