Calculate total self time of zones.

This commit is contained in:
Bartosz Taudul 2018-06-06 00:39:22 +02:00
parent 814cd1553d
commit b7930f67da
2 changed files with 16 additions and 2 deletions

View File

@ -1499,7 +1499,7 @@ void Worker::ProcessZoneEnd( const QueueZoneEnd& ev )
m_data.lastTime = std::max( m_data.lastTime, zone->end );
#ifndef TRACY_NO_STATISTICS
const auto timeSpan = zone->end - zone->start;
auto timeSpan = zone->end - zone->start;
if( timeSpan > 0 )
{
auto it = m_data.sourceLocationZones.find( zone->srcloc );
@ -1507,6 +1507,12 @@ void Worker::ProcessZoneEnd( const QueueZoneEnd& ev )
it->second.min = std::min( it->second.min, timeSpan );
it->second.max = std::max( it->second.max, timeSpan );
it->second.total += timeSpan;
for( auto& v : zone->child )
{
const auto childSpan = std::max( 0ll, v->end - v->start );
timeSpan -= childSpan;
}
it->second.selfTotal += timeSpan;
}
#endif
}
@ -2089,12 +2095,18 @@ void Worker::ReadTimeline( FileRead& f, Vector<ZoneEvent*>& vec, uint16_t thread
if( zone->end >= 0 )
{
const auto timeSpan = zone->end - zone->start;
auto timeSpan = zone->end - zone->start;
if( timeSpan > 0 )
{
it->second.min = std::min( it->second.min, timeSpan );
it->second.max = std::max( it->second.max, timeSpan );
it->second.total += timeSpan;
for( auto& v : zone->child )
{
const auto childSpan = std::max( 0ll, v->end - v->start );
timeSpan -= childSpan;
}
it->second.selfTotal += timeSpan;
}
}
#endif

View File

@ -60,12 +60,14 @@ class Worker
: min( std::numeric_limits<int64_t>::max() )
, max( std::numeric_limits<int64_t>::min() )
, total( 0 )
, selfTotal( 0 )
{}
Vector<ZoneThreadData> zones;
int64_t min;
int64_t max;
int64_t total;
int64_t selfTotal;
};
struct DataBlock