Don't use proxy for a pointer.

This commit is contained in:
Bartosz Taudul 2020-01-22 01:54:25 +01:00
parent ea424a4c8d
commit 3010c7ce63

View File

@ -9126,8 +9126,6 @@ void View::DrawFindZone()
DrawHelpMarker( "Mean time per call" ); DrawHelpMarker( "Mean time per call" );
auto& zones = zoneData.zones; auto& zones = zoneData.zones;
auto sz = zones.size();
auto processed = m_findZone.processed;
const auto hmin = std::min( m_findZone.highlight.start, m_findZone.highlight.end ); const auto hmin = std::min( m_findZone.highlight.start, m_findZone.highlight.end );
const auto hmax = std::max( m_findZone.highlight.start, m_findZone.highlight.end ); const auto hmax = std::max( m_findZone.highlight.start, m_findZone.highlight.end );
const auto groupBy = m_findZone.groupBy; const auto groupBy = m_findZone.groupBy;
@ -9135,22 +9133,24 @@ void View::DrawFindZone()
const auto limitRange = m_findZone.limitRange; const auto limitRange = m_findZone.limitRange;
FindZone::Group* group = nullptr; FindZone::Group* group = nullptr;
uint64_t lastGid = std::numeric_limits<uint64_t>::max() - 1; uint64_t lastGid = std::numeric_limits<uint64_t>::max() - 1;
while( processed < sz ) auto zptr = zones.data() + m_findZone.processed;
const auto zend = zones.data() + zones.size();
while( zptr < zend )
{ {
auto& ev = zones[processed]; auto& ev = *zptr;
if( ev.Zone()->End() < 0 ) break; if( ev.Zone()->End() < 0 ) break;
const auto end = m_worker.GetZoneEndDirect( *ev.Zone() ); const auto end = m_worker.GetZoneEndDirect( *ev.Zone() );
const auto start = ev.Zone()->Start(); const auto start = ev.Zone()->Start();
if( limitRange && ( start < rangeMin || end > rangeMax ) ) if( limitRange && ( start < rangeMin || end > rangeMax ) )
{ {
processed++; zptr++;
continue; continue;
} }
auto timespan = end - start; auto timespan = end - start;
if( timespan == 0 ) if( timespan == 0 )
{ {
processed++; zptr++;
continue; continue;
} }
if( m_findZone.selfTime ) if( m_findZone.selfTime )
@ -9171,12 +9171,12 @@ void View::DrawFindZone()
{ {
if( timespan < hmin || timespan > hmax ) if( timespan < hmin || timespan > hmax )
{ {
processed++; zptr++;
continue; continue;
} }
} }
processed++; zptr++;
uint64_t gid = 0; uint64_t gid = 0;
switch( groupBy ) switch( groupBy )
{ {
@ -9215,7 +9215,7 @@ void View::DrawFindZone()
group->time += timespan; group->time += timespan;
group->zones.push_back_non_empty( ev.Zone() ); group->zones.push_back_non_empty( ev.Zone() );
} }
m_findZone.processed = processed; m_findZone.processed = zptr - zones.data();
Vector<decltype( m_findZone.groups )::iterator> groups; Vector<decltype( m_findZone.groups )::iterator> groups;
groups.reserve_and_use( m_findZone.groups.size() ); groups.reserve_and_use( m_findZone.groups.size() );