1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-29 04:23:51 +00:00

Implement sorting instrumentation statistics by location.

This commit is contained in:
Bartosz Taudul 2024-02-25 13:52:37 +01:00
parent b6562f1784
commit c514a5caca
No known key found for this signature in database
GPG Key ID: B7FE2008B7575DF3

View File

@ -563,7 +563,7 @@ void View::DrawStatistics()
{
ImGui::TableSetupScrollFreeze( 0, 1 );
ImGui::TableSetupColumn( "Name", ImGuiTableColumnFlags_NoHide );
ImGui::TableSetupColumn( "Location", ImGuiTableColumnFlags_NoSort );
ImGui::TableSetupColumn( "Location" );
ImGui::TableSetupColumn( "Total time", ImGuiTableColumnFlags_DefaultSort | ImGuiTableColumnFlags_PreferSortDescending | ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoResize );
ImGui::TableSetupColumn( "Counts", ImGuiTableColumnFlags_PreferSortDescending | ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoResize );
ImGui::TableSetupColumn( "MTPC", ImGuiTableColumnFlags_PreferSortDescending | ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoResize );
@ -583,6 +583,28 @@ void View::DrawStatistics()
pdqsort_branchless( srcloc.begin(), srcloc.end(), [this]( const auto& lhs, const auto& rhs ) { return strcmp( m_worker.GetZoneName( m_worker.GetSourceLocation( lhs.srcloc ) ), m_worker.GetZoneName( m_worker.GetSourceLocation( rhs.srcloc ) ) ) > 0; } );
}
break;
case 1:
if( sortspec.SortDirection == ImGuiSortDirection_Ascending )
{
pdqsort_branchless( srcloc.begin(), srcloc.end(), [this]( const auto& lhs, const auto& rhs ) {
const auto& sll = m_worker.GetSourceLocation( lhs.srcloc );
const auto& slr = m_worker.GetSourceLocation( rhs.srcloc );
const auto cmp = strcmp( m_worker.GetString( sll.file ), m_worker.GetString( slr.file ) );
if( cmp == 0 ) return sll.line < slr.line;
return cmp < 0;
} );
}
else
{
pdqsort_branchless( srcloc.begin(), srcloc.end(), [this]( const auto& lhs, const auto& rhs ) {
const auto& sll = m_worker.GetSourceLocation( lhs.srcloc );
const auto& slr = m_worker.GetSourceLocation( rhs.srcloc );
const auto cmp = strcmp( m_worker.GetString( sll.file ), m_worker.GetString( slr.file ) );
if( cmp == 0 ) return sll.line > slr.line;
return cmp > 0;
} );
}
break;
case 2:
if( sortspec.SortDirection == ImGuiSortDirection_Ascending )
{