mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 02:31:48 +00:00
Issue just one read call per zone.
Separate reads are issued only for first and last of children.
This commit is contained in:
parent
ebf2c3ad5b
commit
26584b00c3
@ -5186,25 +5186,39 @@ int64_t Worker::ReadTimeline( FileRead& f, Vector<short_ptr<ZoneEvent>>& _vec, u
|
||||
vec.set_magic();
|
||||
vec.reserve_exact( size, m_slab );
|
||||
auto zone = vec.begin();
|
||||
auto end = vec.end();
|
||||
do
|
||||
auto end = vec.end() - 1;
|
||||
|
||||
int16_t srcloc;
|
||||
int64_t tstart, tend;
|
||||
uint32_t childSz, extra;
|
||||
f.Read4( srcloc, tstart, extra, childSz );
|
||||
|
||||
while( zone != end )
|
||||
{
|
||||
int16_t srcloc;
|
||||
int64_t tstart;
|
||||
uint32_t childSz;
|
||||
f.Read4( srcloc, tstart, zone->extra, childSz );
|
||||
refTime += tstart;
|
||||
zone->SetStartSrcLoc( refTime, srcloc );
|
||||
zone->extra = extra;
|
||||
refTime = ReadTimelineHaveSize( f, zone, refTime, childIdx, childSz );
|
||||
int64_t tend;
|
||||
f.Read( tend );
|
||||
f.Read5( tend, srcloc, tstart, extra, childSz );
|
||||
refTime += tend;
|
||||
zone->SetEnd( refTime );
|
||||
#ifdef TRACY_NO_STATISTICS
|
||||
CountZoneStatistics( zone );
|
||||
#endif
|
||||
zone++;
|
||||
}
|
||||
while( ++zone != end );
|
||||
|
||||
refTime += tstart;
|
||||
zone->SetStartSrcLoc( refTime, srcloc );
|
||||
zone->extra = extra;
|
||||
refTime = ReadTimelineHaveSize( f, zone, refTime, childIdx, childSz );
|
||||
f.Read( tend );
|
||||
refTime += tend;
|
||||
zone->SetEnd( refTime );
|
||||
#ifdef TRACY_NO_STATISTICS
|
||||
CountZoneStatistics( zone );
|
||||
#endif
|
||||
|
||||
return refTime;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user