mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 10:41:50 +00:00
Last time is now cached, not calculated.
This commit is contained in:
parent
86006e8416
commit
6942f84a99
@ -139,6 +139,7 @@ View::View( const char* addr )
|
|||||||
, m_frameStart( 0 )
|
, m_frameStart( 0 )
|
||||||
, m_zvStart( 0 )
|
, m_zvStart( 0 )
|
||||||
, m_zvEnd( 0 )
|
, m_zvEnd( 0 )
|
||||||
|
, m_lastTime( 0 )
|
||||||
, m_zvHeight( 0 )
|
, m_zvHeight( 0 )
|
||||||
, m_zvScroll( 0 )
|
, m_zvScroll( 0 )
|
||||||
, m_zoneInfoWindow( nullptr )
|
, m_zoneInfoWindow( nullptr )
|
||||||
@ -205,6 +206,7 @@ View::View( FileRead& f )
|
|||||||
f.Read( &m_delay, sizeof( m_delay ) );
|
f.Read( &m_delay, sizeof( m_delay ) );
|
||||||
f.Read( &m_resolution, sizeof( m_resolution ) );
|
f.Read( &m_resolution, sizeof( m_resolution ) );
|
||||||
f.Read( &m_timerMul, sizeof( m_timerMul ) );
|
f.Read( &m_timerMul, sizeof( m_timerMul ) );
|
||||||
|
f.Read( &m_lastTime, sizeof( m_lastTime ) );
|
||||||
|
|
||||||
uint64_t sz;
|
uint64_t sz;
|
||||||
{
|
{
|
||||||
@ -423,6 +425,7 @@ void View::Worker()
|
|||||||
m_timerMul = welcome.timerMul;
|
m_timerMul = welcome.timerMul;
|
||||||
m_frames.push_back( welcome.initBegin * m_timerMul );
|
m_frames.push_back( welcome.initBegin * m_timerMul );
|
||||||
m_frames.push_back( welcome.initEnd * m_timerMul );
|
m_frames.push_back( welcome.initEnd * m_timerMul );
|
||||||
|
m_lastTime = m_frames.back();
|
||||||
m_delay = welcome.delay * m_timerMul;
|
m_delay = welcome.delay * m_timerMul;
|
||||||
m_resolution = welcome.resolution * m_timerMul;
|
m_resolution = welcome.resolution * m_timerMul;
|
||||||
|
|
||||||
@ -642,6 +645,8 @@ void View::ProcessZoneBegin( const QueueZoneBegin& ev )
|
|||||||
assert( ev.cpu == 0xFFFFFFFF || ev.cpu <= std::numeric_limits<int8_t>::max() );
|
assert( ev.cpu == 0xFFFFFFFF || ev.cpu <= std::numeric_limits<int8_t>::max() );
|
||||||
zone->cpu_start = ev.cpu == 0xFFFFFFFF ? -1 : (int8_t)ev.cpu;
|
zone->cpu_start = ev.cpu == 0xFFFFFFFF ? -1 : (int8_t)ev.cpu;
|
||||||
|
|
||||||
|
m_lastTime = std::max( m_lastTime, zone->start );
|
||||||
|
|
||||||
NewZone( zone, ev.thread );
|
NewZone( zone, ev.thread );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -658,6 +663,8 @@ void View::ProcessZoneBeginAllocSrcLoc( const QueueZoneBegin& ev )
|
|||||||
assert( ev.cpu == 0xFFFFFFFF || ev.cpu <= std::numeric_limits<int8_t>::max() );
|
assert( ev.cpu == 0xFFFFFFFF || ev.cpu <= std::numeric_limits<int8_t>::max() );
|
||||||
zone->cpu_start = ev.cpu == 0xFFFFFFFF ? -1 : (int8_t)ev.cpu;
|
zone->cpu_start = ev.cpu == 0xFFFFFFFF ? -1 : (int8_t)ev.cpu;
|
||||||
|
|
||||||
|
m_lastTime = std::max( m_lastTime, zone->start );
|
||||||
|
|
||||||
NewZone( zone, ev.thread );
|
NewZone( zone, ev.thread );
|
||||||
|
|
||||||
m_pendingSourceLocationPayload.erase( it );
|
m_pendingSourceLocationPayload.erase( it );
|
||||||
@ -677,15 +684,18 @@ void View::ProcessZoneEnd( const QueueZoneEnd& ev )
|
|||||||
assert( ev.cpu == 0xFFFFFFFF || ev.cpu <= std::numeric_limits<int8_t>::max() );
|
assert( ev.cpu == 0xFFFFFFFF || ev.cpu <= std::numeric_limits<int8_t>::max() );
|
||||||
zone->cpu_end = ev.cpu == 0xFFFFFFFF ? -1 : (int8_t)ev.cpu;
|
zone->cpu_end = ev.cpu == 0xFFFFFFFF ? -1 : (int8_t)ev.cpu;
|
||||||
assert( zone->end >= zone->start );
|
assert( zone->end >= zone->start );
|
||||||
|
|
||||||
|
m_lastTime = std::max( m_lastTime, zone->end );
|
||||||
}
|
}
|
||||||
|
|
||||||
void View::ProcessFrameMark( const QueueFrameMark& ev )
|
void View::ProcessFrameMark( const QueueFrameMark& ev )
|
||||||
{
|
{
|
||||||
assert( !m_frames.empty() );
|
assert( !m_frames.empty() );
|
||||||
const auto lastframe = m_frames.back();
|
const auto lastframe = m_frames.back();
|
||||||
const auto time = ev.time * m_timerMul;
|
const auto time = int64_t( ev.time * m_timerMul );
|
||||||
assert( lastframe < time );
|
assert( lastframe < time );
|
||||||
m_frames.push_back_non_empty( time );
|
m_frames.push_back_non_empty( time );
|
||||||
|
m_lastTime = std::max( m_lastTime, time );
|
||||||
}
|
}
|
||||||
|
|
||||||
void View::ProcessZoneText( const QueueZoneText& ev )
|
void View::ProcessZoneText( const QueueZoneText& ev )
|
||||||
@ -1376,8 +1386,7 @@ int64_t View::GetFrameTime( size_t idx ) const
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const auto last = GetLastTime();
|
return m_lastTime == 0 ? 0 : m_lastTime - m_frames.back();
|
||||||
return last == 0 ? 0 : last - m_frames.back();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1395,32 +1404,10 @@ int64_t View::GetFrameEnd( size_t idx ) const
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return GetLastTime();
|
return m_lastTime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t View::GetLastTime() const
|
|
||||||
{
|
|
||||||
int64_t last = 0;
|
|
||||||
if( !m_frames.empty() ) last = m_frames.back();
|
|
||||||
for( auto& v : m_threads )
|
|
||||||
{
|
|
||||||
if( !v->timeline.empty() )
|
|
||||||
{
|
|
||||||
auto ev = v->timeline.back();
|
|
||||||
if( ev->end == -1 )
|
|
||||||
{
|
|
||||||
if( ev->start > last ) last = ev->start;
|
|
||||||
}
|
|
||||||
else if( ev->end > last )
|
|
||||||
{
|
|
||||||
last = ev->end;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return last;
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t View::GetZoneEnd( const ZoneEvent& ev ) const
|
int64_t View::GetZoneEnd( const ZoneEvent& ev ) const
|
||||||
{
|
{
|
||||||
auto ptr = &ev;
|
auto ptr = &ev;
|
||||||
@ -1573,7 +1560,7 @@ void View::DrawImpl()
|
|||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if( ImGui::Button( "Messages", ImVec2( 70, 0 ) ) ) m_showMessages = true;
|
if( ImGui::Button( "Messages", ImVec2( 70, 0 ) ) ) m_showMessages = true;
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::Text( "Frames: %-7" PRIu64 " Time span: %-10s View span: %-10s Zones: %-13s Queue delay: %s Timer resolution: %s", m_frames.size(), TimeToString( GetLastTime() - m_frames[0] ), TimeToString( m_zvEnd - m_zvStart ), RealToString( m_zonesCnt, true ), TimeToString( m_delay ), TimeToString( m_resolution ) );
|
ImGui::Text( "Frames: %-7" PRIu64 " Time span: %-10s View span: %-10s Zones: %-13s Queue delay: %s Timer resolution: %s", m_frames.size(), TimeToString( m_lastTime - m_frames[0] ), TimeToString( m_zvEnd - m_zvStart ), RealToString( m_zonesCnt, true ), TimeToString( m_delay ), TimeToString( m_resolution ) );
|
||||||
DrawFrames();
|
DrawFrames();
|
||||||
DrawZones();
|
DrawZones();
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
@ -1744,7 +1731,7 @@ void View::DrawFrames()
|
|||||||
m_zvStart = m_frames[std::max( 0, (int)m_frames.size() - 4 )];
|
m_zvStart = m_frames[std::max( 0, (int)m_frames.size() - 4 )];
|
||||||
if( m_frames.size() == 1 )
|
if( m_frames.size() == 1 )
|
||||||
{
|
{
|
||||||
m_zvEnd = GetLastTime();
|
m_zvEnd = m_lastTime;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2912,7 +2899,7 @@ int View::DrawLocks( uint64_t tid, bool hover, double pxns, const ImVec2& wpos,
|
|||||||
auto next = GetNextLockEvent( vbegin, vend, state, threadBit );
|
auto next = GetNextLockEvent( vbegin, vend, state, threadBit );
|
||||||
|
|
||||||
const auto t0 = (*vbegin)->time;
|
const auto t0 = (*vbegin)->time;
|
||||||
int64_t t1 = next == tl.end() ? GetLastTime() : (*next)->time;
|
int64_t t1 = next == tl.end() ? m_lastTime : (*next)->time;
|
||||||
const auto px0 = std::max( pxend, ( t0 - m_zvStart ) * pxns );
|
const auto px0 = std::max( pxend, ( t0 - m_zvStart ) * pxns );
|
||||||
auto tx0 = px0;
|
auto tx0 = px0;
|
||||||
double px1 = ( t1 - m_zvStart ) * pxns;
|
double px1 = ( t1 - m_zvStart ) * pxns;
|
||||||
@ -2934,7 +2921,7 @@ int View::DrawLocks( uint64_t tid, bool hover, double pxns, const ImVec2& wpos,
|
|||||||
}
|
}
|
||||||
drawState = CombineLockState( drawState, state );
|
drawState = CombineLockState( drawState, state );
|
||||||
condensed++;
|
condensed++;
|
||||||
const auto t2 = n == tl.end() ? GetLastTime() : (*n)->time;
|
const auto t2 = n == tl.end() ? m_lastTime : (*n)->time;
|
||||||
const auto px2 = ( t2 - m_zvStart ) * pxns;
|
const auto px2 = ( t2 - m_zvStart ) * pxns;
|
||||||
if( px2 - px1 > MinVisSize ) break;
|
if( px2 - px1 > MinVisSize ) break;
|
||||||
if( drawState != ns && px2 - px0 > MinVisSize && !( ns == LockState::Nothing || ( m_onlyContendedLocks && ns == LockState::HasLock ) ) ) break;
|
if( drawState != ns && px2 - px0 > MinVisSize && !( ns == LockState::Nothing || ( m_onlyContendedLocks && ns == LockState::HasLock ) ) ) break;
|
||||||
@ -3880,6 +3867,7 @@ void View::Write( FileWrite& f )
|
|||||||
f.Write( &m_delay, sizeof( m_delay ) );
|
f.Write( &m_delay, sizeof( m_delay ) );
|
||||||
f.Write( &m_resolution, sizeof( m_resolution ) );
|
f.Write( &m_resolution, sizeof( m_resolution ) );
|
||||||
f.Write( &m_timerMul, sizeof( m_timerMul ) );
|
f.Write( &m_timerMul, sizeof( m_timerMul ) );
|
||||||
|
f.Write( &m_lastTime, sizeof( m_lastTime ) );
|
||||||
|
|
||||||
uint64_t sz = m_captureName.size();
|
uint64_t sz = m_captureName.size();
|
||||||
f.Write( &sz, sizeof( sz ) );
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
@ -121,7 +121,6 @@ private:
|
|||||||
int64_t GetFrameTime( size_t idx ) const;
|
int64_t GetFrameTime( size_t idx ) const;
|
||||||
int64_t GetFrameBegin( size_t idx ) const;
|
int64_t GetFrameBegin( size_t idx ) const;
|
||||||
int64_t GetFrameEnd( size_t idx ) const;
|
int64_t GetFrameEnd( size_t idx ) const;
|
||||||
int64_t GetLastTime() const;
|
|
||||||
int64_t GetZoneEnd( const ZoneEvent& ev ) const;
|
int64_t GetZoneEnd( const ZoneEvent& ev ) const;
|
||||||
int64_t GetZoneEnd( const GpuEvent& ev ) const;
|
int64_t GetZoneEnd( const GpuEvent& ev ) const;
|
||||||
const char* GetString( uint64_t ptr ) const;
|
const char* GetString( uint64_t ptr ) const;
|
||||||
@ -235,6 +234,7 @@ private:
|
|||||||
|
|
||||||
int64_t m_zvStart;
|
int64_t m_zvStart;
|
||||||
int64_t m_zvEnd;
|
int64_t m_zvEnd;
|
||||||
|
int64_t m_lastTime;
|
||||||
|
|
||||||
int64_t m_delay;
|
int64_t m_delay;
|
||||||
int64_t m_resolution;
|
int64_t m_resolution;
|
||||||
|
Loading…
Reference in New Issue
Block a user