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

introduced type alias for stl containers to avoid memory tracking polution

parent b4dc2651
No related branches found
No related tags found
1 merge request!14BP_cervera3 - new measurements
......@@ -12,7 +12,7 @@ MeasurementEngine::MeasurementEngine ( ) {
reset_measurements ( );
}
 
void MeasurementEngine::push_measurement_frame ( std::string frame_name, measurements::Type frame_type ) {
void MeasurementEngine::push_measurement_frame ( measurements::stealth_string frame_name, measurements::Type frame_type ) {
unsigned parent_idx = frame_idx_stack.back ( );
 
frames.emplace_back ( std::move ( frame_name ), frame_type, parent_idx );
......@@ -20,6 +20,7 @@ void MeasurementEngine::push_measurement_frame ( std::string frame_name, measure
unsigned current_idx = frames.size ( ) - 1;
 
frames[parent_idx].sub_idxs.push_back ( current_idx );
frame_idx_stack.push_back ( current_idx );
 
TimeDataFrame::init ( current_idx, frames );
......@@ -39,7 +40,7 @@ void MeasurementEngine::reset_measurements ( ) {
frames.clear ( );
frame_idx_stack.clear ( );
 
frames.emplace_back ( std::move ( "Root" ), measurements::Type::ROOT, 0 );
frames.emplace_back ( "Root", measurements::Type::ROOT, 0 );
frame_idx_stack.push_back ( 0 );
}
 
......@@ -53,7 +54,7 @@ void MeasurementEngine::print_as_list ( std::ostream & os, unsigned idx ) {
MeasurementFrame & frame = frames[idx];
 
if ( frame.type != measurements::Type::ROOT ) {
os << std::make_tuple ( frame.name, frame.type, frame.parent_idx, frame.sub_idxs, frame.time.to_string ( ), frame.memory.to_string ( ) );
os << std::make_tuple ( frame.name, frame.type, frame.parent_idx, frame.time.to_string ( ), frame.memory.to_string ( ) );
 
if ( idx != frames.size ( ) - 1 )
os << ", ";
......
......@@ -20,7 +20,7 @@ class MeasurementEngine {
void print_as_list ( std::ostream &, unsigned );
 
public:
void push_measurement_frame ( std::string, measurements::Type );
void push_measurement_frame ( measurements::stealth_string, measurements::Type );
void pop_measurement_frame ( );
void reset_measurements ( );
 
......
......@@ -53,15 +53,16 @@ struct TimeDataFrame {
};
 
struct MeasurementFrame {
std::string name;
measurements::Type type;
unsigned parent_idx;
std::vector < unsigned > sub_idxs;
measurements::stealth_string name;
measurements::Type type;
unsigned parent_idx;
measurements::stealth_vector < unsigned > sub_idxs;
 
TimeDataFrame time;
MemoryDataFrame memory;
 
MeasurementFrame ( std::string && name, measurements::Type type, unsigned parent_idx ) : name ( name ), type ( type ), parent_idx ( parent_idx ) { }
MeasurementFrame ( measurements::stealth_string name, measurements::Type type, unsigned parent_idx ) : name ( std::move ( name ) ), type ( type ), parent_idx ( parent_idx ), time ( ), memory ( ) { }
};
 
}
......
......@@ -6,6 +6,7 @@
#define MEASUREMENT_TYPES_HPP_
 
#include <memory>
#include <vector>
#include "MeasurementNew.hpp"
 
namespace measurements {
......@@ -35,8 +36,13 @@ public:
 
template < typename U >
struct rebind { using other = stealth_allocator < U >; };
};
 
using stealth_string = std::basic_string < char, std::char_traits < char >, stealth_allocator < char > >;
template < typename T >
using stealth_vector = std::vector < T, stealth_allocator < T > >;
}
 
#endif /* MEASUREMENT_TYPES_HPP_ */
......@@ -9,7 +9,7 @@
 
namespace measurements {
 
void start ( std::string name, measurements::Type type ) {
void start ( measurements::stealth_string name, measurements::Type type ) {
MeasurementEngine::INSTANCE.push_measurement_frame ( std::move ( name ), type );
}
 
......
......@@ -45,15 +45,17 @@ void MeasurementsTest::testTimeMeasurements ( ) {
void MeasurementsTest::testMemoryMeasurements ( ) {
 
measurements::start ( "chunk1", measurements::Type::MAIN );
int * baz = new int[500];
delete[] baz;
measurements::end ( );
 
measurements::start ( "chunk2", measurements::Type::MAIN );
int * foo = new int[500];
int * foo = new int[1000];
measurements::start ( "chunk21", measurements::Type::MAIN );
int * bar = new int[500];
int * bar = new int[2000];
measurements::end ( );
delete foo;
delete bar;
delete[] foo;
delete[] bar;
measurements::end ( );
 
measurements::print_as_list ( std::cout );
......
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