From f4910b9d920640e08234ddce3dbbc8ab92e1b809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radovan=20=C4=8Cerven=C3=BD?= <radovan.cerveny@gmail.com> Date: Thu, 3 Mar 2016 13:08:31 +0100 Subject: [PATCH] fixed memory frame memory propagation, introduced in_frame_high_watermark to memory frame, renamed some frame fields, fixed some text output issues --- .../src/measurements/MeasurementEngine.cpp | 6 +++- .../measurements/MeasurementXmlFactory.cpp | 36 +++++++++++-------- .../measurements/MeasurementXmlFactory.hpp | 5 +-- .../measurements/frames/CounterDataFrame.cpp | 17 ++++----- .../measurements/frames/CounterDataFrame.hpp | 2 +- .../measurements/frames/MemoryDataFrame.cpp | 36 +++++++++++++------ .../measurements/frames/MemoryDataFrame.hpp | 2 ++ .../src/measurements/frames/TimeDataFrame.cpp | 6 ++-- .../src/measurements/frames/TimeDataFrame.hpp | 2 +- .../measurements/MeasurementsTest.cpp | 7 ++++ 10 files changed, 78 insertions(+), 41 deletions(-) diff --git a/alib2common/src/measurements/MeasurementEngine.cpp b/alib2common/src/measurements/MeasurementEngine.cpp index 0615258d58..19fac66b96 100644 --- a/alib2common/src/measurements/MeasurementEngine.cpp +++ b/alib2common/src/measurements/MeasurementEngine.cpp @@ -54,6 +54,10 @@ void MeasurementEngine::reset_measurements ( ) { frames.emplace_back ( "Root", measurements::Type::ROOT, 0 ); frame_idx_stack.push_back ( 0 ); + + TimeDataFrame::init ( 0, frames ); + MemoryDataFrame::init ( 0, frames ); + CounterDataFrame::init ( 0, frames ); } MeasurementResults MeasurementEngine::get_results ( ) const { @@ -62,7 +66,7 @@ MeasurementResults MeasurementEngine::get_results ( ) const { template < typename Hint > 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 ) ) return; Hint::frame_type::hint ( frame_idx_stack.back ( ), frames, std::move ( hint ) ); } diff --git a/alib2common/src/measurements/MeasurementXmlFactory.cpp b/alib2common/src/measurements/MeasurementXmlFactory.cpp index 06bb32b916..a8b4db4372 100644 --- a/alib2common/src/measurements/MeasurementXmlFactory.cpp +++ b/alib2common/src/measurements/MeasurementXmlFactory.cpp @@ -57,9 +57,9 @@ void MeasurementXmlFactory::composeTimeDataFrame ( deque < Token > & tokens, uns tokens.emplace_back ( TIME_DATA_FRAME_DURATION_TAG, Token::TokenType::START_ELEMENT ); tokens.emplace_back ( std::to_string ( frame.duration.count ( ) ), Token::TokenType::CHARACTER ); tokens.emplace_back ( TIME_DATA_FRAME_DURATION_TAG, Token::TokenType::END_ELEMENT ); - tokens.emplace_back ( TIME_DATA_FRAME_REAL_DURATION_TAG, Token::TokenType::START_ELEMENT ); - tokens.emplace_back ( std::to_string ( frame.real_duration.count ( ) ), Token::TokenType::CHARACTER ); - tokens.emplace_back ( TIME_DATA_FRAME_REAL_DURATION_TAG, Token::TokenType::END_ELEMENT ); + tokens.emplace_back ( TIME_DATA_FRAME_IN_FRAME_DURATION_TAG, Token::TokenType::START_ELEMENT ); + tokens.emplace_back ( std::to_string ( frame.in_frame_duration.count ( ) ), Token::TokenType::CHARACTER ); + tokens.emplace_back ( TIME_DATA_FRAME_IN_FRAME_DURATION_TAG, Token::TokenType::END_ELEMENT ); tokens.emplace_back ( TIME_DATA_FRAME_TAG, Token::TokenType::END_ELEMENT ); } @@ -76,6 +76,9 @@ void MeasurementXmlFactory::composeMemoryDataFrame ( deque < Token > & tokens, u tokens.emplace_back ( MEMORY_DATA_FRAME_HIGH_WATERMARK_TAG, Token::TokenType::START_ELEMENT ); tokens.emplace_back ( std::to_string ( frame.high_watermark ), Token::TokenType::CHARACTER ); tokens.emplace_back ( MEMORY_DATA_FRAME_HIGH_WATERMARK_TAG, Token::TokenType::END_ELEMENT ); + tokens.emplace_back ( MEMORY_DATA_FRAME_IN_FRAME_HIGH_WATERMARK_TAG, Token::TokenType::START_ELEMENT ); + tokens.emplace_back ( std::to_string ( frame.in_frame_high_watermark ), Token::TokenType::CHARACTER ); + tokens.emplace_back ( MEMORY_DATA_FRAME_IN_FRAME_HIGH_WATERMARK_TAG, Token::TokenType::END_ELEMENT ); tokens.emplace_back ( MEMORY_DATA_FRAME_TAG, Token::TokenType::END_ELEMENT ); } @@ -99,9 +102,9 @@ void MeasurementXmlFactory::composeCounterDataFrame ( deque < Token > & tokens, tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTERS_TAG, Token::TokenType::END_ELEMENT ); - tokens.emplace_back ( COUNTER_DATA_FRAME_REAL_COUNTERS_TAG, Token::TokenType::START_ELEMENT ); + tokens.emplace_back ( COUNTER_DATA_FRAME_IN_FRAME_COUNTERS_TAG, Token::TokenType::START_ELEMENT ); - for ( const auto & elem : cdf.real_counters ) { + for ( const auto & elem : cdf.in_frame_counters ) { tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_TAG, Token::TokenType::START_ELEMENT ); tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_NAME_TAG, Token::TokenType::START_ELEMENT ); tokens.emplace_back ( measurements::to_string ( elem.first ), Token::TokenType::CHARACTER ); @@ -112,7 +115,7 @@ void MeasurementXmlFactory::composeCounterDataFrame ( deque < Token > & tokens, tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_TAG, Token::TokenType::END_ELEMENT ); } - tokens.emplace_back ( COUNTER_DATA_FRAME_REAL_COUNTERS_TAG, Token::TokenType::END_ELEMENT ); + tokens.emplace_back ( COUNTER_DATA_FRAME_IN_FRAME_COUNTERS_TAG, Token::TokenType::END_ELEMENT ); tokens.emplace_back ( COUNTER_DATA_FRAME_TAG, Token::TokenType::END_ELEMENT ); } @@ -232,10 +235,10 @@ void MeasurementXmlFactory::parseTimeDataFrame ( MeasurementFrame & mf, deque < FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, TIME_DATA_FRAME_DURATION_TAG ); mf.time.duration = TimeDataFrame::value_type ( valueTypeFromString < TimeDataFrame::value_type::rep > ( FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER ) ) ); FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, TIME_DATA_FRAME_DURATION_TAG ); - } else if ( data == TIME_DATA_FRAME_REAL_DURATION_TAG ) { - FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, TIME_DATA_FRAME_REAL_DURATION_TAG ); - mf.time.real_duration = TimeDataFrame::value_type ( valueTypeFromString < TimeDataFrame::value_type::rep > ( FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER ) ) ); - FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, TIME_DATA_FRAME_REAL_DURATION_TAG ); + } else if ( data == TIME_DATA_FRAME_IN_FRAME_DURATION_TAG ) { + FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, TIME_DATA_FRAME_IN_FRAME_DURATION_TAG ); + mf.time.in_frame_duration = TimeDataFrame::value_type ( valueTypeFromString < TimeDataFrame::value_type::rep > ( FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER ) ) ); + FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, TIME_DATA_FRAME_IN_FRAME_DURATION_TAG ); } else { break; } @@ -264,6 +267,10 @@ void MeasurementXmlFactory::parseMemoryDataFrame ( MeasurementFrame & mf, deque FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, MEMORY_DATA_FRAME_HIGH_WATERMARK_TAG ); mf.memory.high_watermark = valueTypeFromString < MemoryDataFrame::value_type > ( FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER ) ); FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, MEMORY_DATA_FRAME_HIGH_WATERMARK_TAG ); + } else if ( data == MEMORY_DATA_FRAME_IN_FRAME_HIGH_WATERMARK_TAG ) { + FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, MEMORY_DATA_FRAME_IN_FRAME_HIGH_WATERMARK_TAG ); + mf.memory.in_frame_high_watermark = valueTypeFromString < MemoryDataFrame::value_type > ( FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER ) ); + FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, MEMORY_DATA_FRAME_IN_FRAME_HIGH_WATERMARK_TAG ); } else { break; } @@ -282,8 +289,8 @@ void MeasurementXmlFactory::parseCounterDataFrame ( MeasurementFrame & mf, deque if ( data == COUNTER_DATA_FRAME_COUNTERS_TAG ) parseCounterDataFrameCounters ( COUNTER_DATA_FRAME_COUNTERS_TAG, mf.counter.counters, iter ); - else if ( data == COUNTER_DATA_FRAME_REAL_COUNTERS_TAG ) - parseCounterDataFrameCounters ( COUNTER_DATA_FRAME_REAL_COUNTERS_TAG, mf.counter.real_counters, iter ); + else if ( data == COUNTER_DATA_FRAME_IN_FRAME_COUNTERS_TAG ) + parseCounterDataFrameCounters ( COUNTER_DATA_FRAME_IN_FRAME_COUNTERS_TAG, mf.counter.in_frame_counters, iter ); else break; } @@ -354,16 +361,17 @@ std::string MeasurementXmlFactory::MEASUREMENT_SUBFRAMES_TAG = "SubFrames"; std::string MeasurementXmlFactory::TIME_DATA_FRAME_TAG = "TimeData"; std::string MeasurementXmlFactory::TIME_DATA_FRAME_DURATION_TAG = "Duration"; -std::string MeasurementXmlFactory::TIME_DATA_FRAME_REAL_DURATION_TAG = "RealDuration"; +std::string MeasurementXmlFactory::TIME_DATA_FRAME_IN_FRAME_DURATION_TAG = "InFrameDuration"; std::string MeasurementXmlFactory::MEMORY_DATA_FRAME_TAG = "MemoryData"; std::string MeasurementXmlFactory::MEMORY_DATA_FRAME_START_HEAP_USAGE_TAG = "StartHeapUsage"; std::string MeasurementXmlFactory::MEMORY_DATA_FRAME_END_HEAP_USAGE_TAG = "EndHeapUsage"; std::string MeasurementXmlFactory::MEMORY_DATA_FRAME_HIGH_WATERMARK_TAG = "HighWatermark"; +std::string MeasurementXmlFactory::MEMORY_DATA_FRAME_IN_FRAME_HIGH_WATERMARK_TAG = "InFrameHighWatermark"; std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_TAG = "CounterData"; std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_COUNTERS_TAG = "Counters"; -std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_REAL_COUNTERS_TAG = "RealCounters"; +std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_IN_FRAME_COUNTERS_TAG = "InFrameCounters"; std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_COUNTER_TAG = "Counter"; std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_COUNTER_NAME_TAG = "Name"; std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_COUNTER_VALUE_TAG = "Value"; diff --git a/alib2common/src/measurements/MeasurementXmlFactory.hpp b/alib2common/src/measurements/MeasurementXmlFactory.hpp index cd6b0a3957..aec56d8956 100644 --- a/alib2common/src/measurements/MeasurementXmlFactory.hpp +++ b/alib2common/src/measurements/MeasurementXmlFactory.hpp @@ -24,18 +24,19 @@ class MeasurementXmlFactory { // TimeDataFrame static std::string TIME_DATA_FRAME_TAG; static std::string TIME_DATA_FRAME_DURATION_TAG; - static std::string TIME_DATA_FRAME_REAL_DURATION_TAG; + static std::string TIME_DATA_FRAME_IN_FRAME_DURATION_TAG; // MemoryDataFrame static std::string MEMORY_DATA_FRAME_TAG; static std::string MEMORY_DATA_FRAME_START_HEAP_USAGE_TAG; static std::string MEMORY_DATA_FRAME_END_HEAP_USAGE_TAG; static std::string MEMORY_DATA_FRAME_HIGH_WATERMARK_TAG; + static std::string MEMORY_DATA_FRAME_IN_FRAME_HIGH_WATERMARK_TAG; // CounterDataFrame static std::string COUNTER_DATA_FRAME_TAG; static std::string COUNTER_DATA_FRAME_COUNTERS_TAG; - static std::string COUNTER_DATA_FRAME_REAL_COUNTERS_TAG; + static std::string COUNTER_DATA_FRAME_IN_FRAME_COUNTERS_TAG; static std::string COUNTER_DATA_FRAME_COUNTER_TAG; static std::string COUNTER_DATA_FRAME_COUNTER_NAME_TAG; static std::string COUNTER_DATA_FRAME_COUNTER_VALUE_TAG; diff --git a/alib2common/src/measurements/frames/CounterDataFrame.cpp b/alib2common/src/measurements/frames/CounterDataFrame.cpp index 6cd25725fc..4541f95b22 100644 --- a/alib2common/src/measurements/frames/CounterDataFrame.cpp +++ b/alib2common/src/measurements/frames/CounterDataFrame.cpp @@ -18,6 +18,7 @@ void CounterDataFrame::update ( unsigned, measurements::stealth_vector < Measure } void CounterDataFrame::hint ( unsigned frame_idx, measurements::stealth_vector < MeasurementFrame > & frames, CounterHint hint ) { + if ( frames[frame_idx].type == measurements::Type::ROOT ) return; CounterHint::value_type delta = 0; @@ -31,7 +32,7 @@ void CounterDataFrame::hint ( unsigned frame_idx, measurements::stealth_vector < break; } - frames[frame_idx].counter.real_counters[hint.name] += delta; + frames[frame_idx].counter.in_frame_counters[hint.name] += delta; unsigned cur_idx = frame_idx; @@ -48,20 +49,20 @@ void CounterDataFrame::hint ( unsigned frame_idx, measurements::stealth_vector < std::ostream & operator <<( std::ostream & os, const CounterDataFrame & cdf ) { - os << "("; + os << "cnts: ("; for ( auto it = cdf.counters.begin ( ); it != cdf.counters.end ( ); ++it ) { - os << it->first << " : " << it->second; + if ( it != cdf.counters.begin ( ) ) os << ", "; - if ( it != cdf.counters.end ( ) ) os << ", "; + os << it->first << " : " << it->second; } - os << "), ("; + os << "), if_cnts: ("; - for ( auto it = cdf.real_counters.begin ( ); it != cdf.real_counters.end ( ); ++it ) { - os << it->first << " : " << it->second; + for ( auto it = cdf.in_frame_counters.begin ( ); it != cdf.in_frame_counters.end ( ); ++it ) { + if ( it != cdf.in_frame_counters.begin ( ) ) os << ", "; - if ( it != cdf.real_counters.end ( ) ) os << ", "; + os << it->first << " : " << it->second; } os << ")"; diff --git a/alib2common/src/measurements/frames/CounterDataFrame.hpp b/alib2common/src/measurements/frames/CounterDataFrame.hpp index 1cd140533a..287930a299 100644 --- a/alib2common/src/measurements/frames/CounterDataFrame.hpp +++ b/alib2common/src/measurements/frames/CounterDataFrame.hpp @@ -28,7 +28,7 @@ struct CounterHint { struct CounterDataFrame { measurements::stealth_map < measurements::stealth_string, CounterHint::value_type > counters; - measurements::stealth_map < measurements::stealth_string, CounterHint::value_type > real_counters; + measurements::stealth_map < measurements::stealth_string, CounterHint::value_type > in_frame_counters; static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); diff --git a/alib2common/src/measurements/frames/MemoryDataFrame.cpp b/alib2common/src/measurements/frames/MemoryDataFrame.cpp index 4e3f6635be..dd1bd8cb10 100644 --- a/alib2common/src/measurements/frames/MemoryDataFrame.cpp +++ b/alib2common/src/measurements/frames/MemoryDataFrame.cpp @@ -10,11 +10,20 @@ void MemoryDataFrame::init ( unsigned frame_idx, measurements::stealth_vector < MeasurementFrame & current_frame = frames[frame_idx]; MeasurementFrame & parent_frame = frames[current_frame.parent_idx]; - if ( parent_frame.type != measurements::Type::ROOT ) { - current_frame.memory.start_heap_usage = parent_frame.memory.current_heap_usage; - current_frame.memory.current_heap_usage = parent_frame.memory.current_heap_usage; - current_frame.memory.high_watermark = parent_frame.memory.current_heap_usage; + // "hacky" adjustment, if this is the first user inserted frame, we reset ROOTs values to 0 + // beacause we want the heap usage to start at 0 and also we want to be able to propagate ROOTs values between separate + // user OVERALL frames + if ( ( parent_frame.type == measurements::Type::ROOT ) && ( frames.size ( ) == 2 ) ) { + parent_frame.memory.start_heap_usage = 0; + parent_frame.memory.current_heap_usage = 0; + parent_frame.memory.high_watermark = 0; + parent_frame.memory.in_frame_high_watermark = 0; } + + current_frame.memory.start_heap_usage = parent_frame.memory.current_heap_usage; + current_frame.memory.current_heap_usage = parent_frame.memory.current_heap_usage; + current_frame.memory.high_watermark = parent_frame.memory.current_heap_usage; + current_frame.memory.in_frame_high_watermark = parent_frame.memory.current_heap_usage; } void MemoryDataFrame::update ( unsigned frame_idx, measurements::stealth_vector < MeasurementFrame > & frames ) { @@ -24,11 +33,16 @@ void MemoryDataFrame::update ( unsigned frame_idx, measurements::stealth_vector current_frame.memory.end_heap_usage = current_frame.memory.current_heap_usage; // if we end up with more memory from children, adjust watermark - if ( current_frame.memory.current_heap_usage > current_frame.memory.high_watermark ) - current_frame.memory.high_watermark = current_frame.memory.current_heap_usage; + if ( current_frame.memory.current_heap_usage > current_frame.memory.in_frame_high_watermark ) + current_frame.memory.in_frame_high_watermark = current_frame.memory.current_heap_usage; + + if ( parent_frame.memory.high_watermark < current_frame.memory.in_frame_high_watermark ) + parent_frame.memory.high_watermark = current_frame.memory.in_frame_high_watermark; + + if ( current_frame.memory.high_watermark < current_frame.memory.in_frame_high_watermark ) + current_frame.memory.high_watermark = current_frame.memory.in_frame_high_watermark; - if ( parent_frame.type != measurements::Type::ROOT ) - parent_frame.memory.current_heap_usage = current_frame.memory.current_heap_usage; + parent_frame.memory.current_heap_usage = current_frame.memory.current_heap_usage; } void MemoryDataFrame::hint ( unsigned frame_idx, measurements::stealth_vector < MeasurementFrame > & frames, MemoryHint hint ) { @@ -39,8 +53,8 @@ void MemoryDataFrame::hint ( unsigned frame_idx, measurements::stealth_vector < case MemoryHint::Type::NEW: current_frame.memory.current_heap_usage += hint.size; - if ( current_frame.memory.current_heap_usage > current_frame.memory.high_watermark ) - current_frame.memory.high_watermark = current_frame.memory.current_heap_usage; + if ( current_frame.memory.current_heap_usage > current_frame.memory.in_frame_high_watermark ) + current_frame.memory.in_frame_high_watermark = current_frame.memory.current_heap_usage; break; @@ -51,7 +65,7 @@ void MemoryDataFrame::hint ( unsigned frame_idx, measurements::stealth_vector < } std::ostream & operator <<( std::ostream & os, const MemoryDataFrame & mdf ) { - os << mdf.start_heap_usage << "shu, " << mdf.end_heap_usage << "ehu, " << mdf.high_watermark << "hw"; + os << mdf.start_heap_usage << "B shu, " << mdf.end_heap_usage << "B ehu, " << mdf.high_watermark << "B hw, " << mdf.in_frame_high_watermark << "B if_hw"; return os; } diff --git a/alib2common/src/measurements/frames/MemoryDataFrame.hpp b/alib2common/src/measurements/frames/MemoryDataFrame.hpp index c7c0682acf..4fdb5eec03 100644 --- a/alib2common/src/measurements/frames/MemoryDataFrame.hpp +++ b/alib2common/src/measurements/frames/MemoryDataFrame.hpp @@ -30,7 +30,9 @@ struct MemoryDataFrame { value_type start_heap_usage; value_type end_heap_usage; + value_type high_watermark; + value_type in_frame_high_watermark; value_type current_heap_usage; diff --git a/alib2common/src/measurements/frames/TimeDataFrame.cpp b/alib2common/src/measurements/frames/TimeDataFrame.cpp index 11a194db82..c641a5f2a1 100644 --- a/alib2common/src/measurements/frames/TimeDataFrame.cpp +++ b/alib2common/src/measurements/frames/TimeDataFrame.cpp @@ -19,15 +19,15 @@ void TimeDataFrame::update ( unsigned frame_idx, measurements::stealth_vector < MeasurementFrame & current_frame = frames[frame_idx]; current_frame.time.duration = duration_cast < microseconds > ( high_resolution_clock::now ( ) - current_frame.time.start ); - current_frame.time.real_duration += current_frame.time.duration; + current_frame.time.in_frame_duration += current_frame.time.duration; MeasurementFrame & parent_frame = frames[current_frame.parent_idx]; - parent_frame.time.real_duration -= current_frame.time.duration; + parent_frame.time.in_frame_duration -= current_frame.time.duration; } std::ostream & operator <<( std::ostream & os, const TimeDataFrame & tdf ) { - os << tdf.duration << ", " << tdf.real_duration; + os << tdf.duration << " dur, " << tdf.in_frame_duration << " if_dur"; return os; } diff --git a/alib2common/src/measurements/frames/TimeDataFrame.hpp b/alib2common/src/measurements/frames/TimeDataFrame.hpp index 88282e8f4b..efb0664ab3 100644 --- a/alib2common/src/measurements/frames/TimeDataFrame.hpp +++ b/alib2common/src/measurements/frames/TimeDataFrame.hpp @@ -20,7 +20,7 @@ struct TimeDataFrame { std::chrono::time_point < std::chrono::high_resolution_clock > start; value_type duration; - value_type real_duration; + value_type in_frame_duration; static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); diff --git a/alib2common/test-src/measurements/MeasurementsTest.cpp b/alib2common/test-src/measurements/MeasurementsTest.cpp index 3ad0114b5c..96fb460c0c 100644 --- a/alib2common/test-src/measurements/MeasurementsTest.cpp +++ b/alib2common/test-src/measurements/MeasurementsTest.cpp @@ -85,6 +85,13 @@ void MeasurementsTest::testMemoryMeasurements ( ) { delete[] bar; measurements::end ( ); + measurements::start ( "chunk3", measurements::Type::MAIN ); + measurements::start ( "chunk31", measurements::Type::MAIN ); + bar = new int[1000]; + delete[] bar; + measurements::end ( ); + measurements::end ( ); + std::cout << measurements::MeasurementFormat::LIST << measurements::results ( ) << std::endl; std::cout << measurements::MeasurementFormat::TREE << measurements::results ( ) << std::endl; std::cout << measurements::MeasurementFormat::XML << measurements::results ( ) << std::endl; -- GitLab