mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 02:31:48 +00:00
Save source location zones counts.
This allows preallocation of zones-in-source-location vectors.
This commit is contained in:
parent
5b9ad4bcbf
commit
bff6eb4c34
@ -7,7 +7,7 @@ namespace Version
|
||||
{
|
||||
enum { Major = 0 };
|
||||
enum { Minor = 3 };
|
||||
enum { Patch = 200 };
|
||||
enum { Patch = 201 };
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -337,13 +337,54 @@ Worker::Worker( FileRead& f, EventType::Type eventMask )
|
||||
#ifndef TRACY_NO_STATISTICS
|
||||
m_data.sourceLocationZonesReady = false;
|
||||
m_data.sourceLocationZones.reserve( sle + sz );
|
||||
for( uint64_t i=1; i<sle; i++ )
|
||||
|
||||
if( fileVer >= FileVersion( 0, 3, 201 ) )
|
||||
{
|
||||
m_data.sourceLocationZones.emplace( int32_t( i ), SourceLocationZones() );
|
||||
f.Read( sz );
|
||||
for( uint64_t i=0; i<sz; i++ )
|
||||
{
|
||||
int32_t id;
|
||||
uint64_t cnt;
|
||||
f.Read( id );
|
||||
f.Read( cnt );
|
||||
auto status = m_data.sourceLocationZones.emplace( id, SourceLocationZones() );
|
||||
assert( status.second );
|
||||
status.first->second.zones.reserve( cnt );
|
||||
}
|
||||
}
|
||||
for( uint64_t i=0; i<sz; i++ )
|
||||
else
|
||||
{
|
||||
m_data.sourceLocationZones.emplace( -int32_t( i + 1 ), SourceLocationZones() );
|
||||
for( uint64_t i=1; i<sle; i++ )
|
||||
{
|
||||
m_data.sourceLocationZones.emplace( int32_t( i ), SourceLocationZones() );
|
||||
}
|
||||
for( uint64_t i=0; i<sz; i++ )
|
||||
{
|
||||
m_data.sourceLocationZones.emplace( -int32_t( i + 1 ), SourceLocationZones() );
|
||||
}
|
||||
}
|
||||
#else
|
||||
if( fileVer >= FileVersion( 0, 3, 201 ) )
|
||||
{
|
||||
f.Read( sz );
|
||||
for( uint64_t i=0; i<sz; i++ )
|
||||
{
|
||||
int32_t id;
|
||||
f.Read( id );
|
||||
f.Skip( sizeof( uint64_t ) );
|
||||
m_data.sourceLocationZonesCnt.emplace( id, 0 );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( uint64_t i=1; i<sle; i++ )
|
||||
{
|
||||
m_data.sourceLocationZonesCnt.emplace( int32_t( i ), 0 );
|
||||
}
|
||||
for( uint64_t i=0; i<sz; i++ )
|
||||
{
|
||||
m_data.sourceLocationZonesCnt.emplace( -int32_t( i + 1 ), 0 );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2773,6 +2814,28 @@ void Worker::Write( FileWrite& f )
|
||||
f.Write( v, sizeof( *v ) );
|
||||
}
|
||||
|
||||
#ifndef TRACY_NO_STATISTICS
|
||||
sz = m_data.sourceLocationZones.size();
|
||||
f.Write( &sz, sizeof( sz ) );
|
||||
for( auto& v : m_data.sourceLocationZones )
|
||||
{
|
||||
int32_t id = v.first;
|
||||
uint64_t cnt = v.second.zones.size();
|
||||
f.Write( &id, sizeof( id ) );
|
||||
f.Write( &cnt, sizeof( cnt ) );
|
||||
}
|
||||
#else
|
||||
sz = m_data.sourceLocationZonesCnt.size();
|
||||
f.Write( &sz, sizeof( sz ) );
|
||||
for( auto& v : m_data.sourceLocationZonesCnt )
|
||||
{
|
||||
int32_t id = v.first;
|
||||
uint64_t cnt = v.second;
|
||||
f.Write( &id, sizeof( id ) );
|
||||
f.Write( &cnt, sizeof( cnt ) );
|
||||
}
|
||||
#endif
|
||||
|
||||
sz = m_data.lockMap.size();
|
||||
f.Write( &sz, sizeof( sz ) );
|
||||
for( auto& v : m_data.lockMap )
|
||||
|
Loading…
Reference in New Issue
Block a user