From 88b79614217f4b13bf999e5fe1d75bb51a947b9c Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sat, 16 Feb 2019 20:53:07 +0100 Subject: [PATCH] Allocate memory for all zones at the current level at once. --- server/TracyWorker.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 88c8825b..30a13841 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -3324,12 +3324,16 @@ void Worker::ReadTimeline( FileRead& f, Vector& vec, uint16_t thread assert( size != 0 ); vec.reserve_exact( size, m_slab ); m_data.zonesCnt += size; - + auto zone = (ZoneEvent*)m_slab.AllocBig( sizeof( ZoneEvent ) * size ); + auto zptr = zone; + auto vptr = vec.data(); for( uint64_t i=0; i(); - vec[i] = zone; // Use zone->end as scratch buffer for zone start time offset. f.Read( &zone->end, sizeof( zone->end ) + sizeof( zone->srcloc ) + sizeof( zone->cpu_start ) + sizeof( zone->cpu_end ) + sizeof( zone->text ) + sizeof( zone->callstack ) + sizeof( zone->name ) ); refTime += zone->end; @@ -3338,6 +3342,7 @@ void Worker::ReadTimeline( FileRead& f, Vector& vec, uint16_t thread zone->end = ReadTimeOffset( f, refTime ); ReadTimelineUpdateStatistics( zone, thread ); } + while( ++zone != zptr ); } void Worker::ReadTimelinePre042( FileRead& f, Vector& vec, uint16_t thread, uint64_t size, int fileVer ) @@ -3377,12 +3382,16 @@ void Worker::ReadTimeline( FileRead& f, Vector& vec, uint64_t size, i { assert( size != 0 ); vec.reserve_exact( size, m_slab ); - + auto zone = (GpuEvent*)m_slab.AllocBig( sizeof( GpuEvent ) * size ); + auto zptr = zone; + auto vptr = vec.data(); for( uint64_t i=0; i(); - vec[i] = zone; // Use zone->gpuStart as scratch buffer for CPU zone start time offset. // Use zone->gpuEnd as scratch buffer for GPU zone start time offset. @@ -3407,6 +3416,7 @@ void Worker::ReadTimeline( FileRead& f, Vector& vec, uint64_t size, i zone->cpuEnd = ReadTimeOffset( f, refTime ); zone->gpuEnd = ReadTimeOffset( f, refGpuTime ); } + while( ++zone != zptr ); } void Worker::ReadTimelinePre042( FileRead& f, Vector& vec, uint64_t size, int fileVer )