From 920bfc8c8230f29d780d246ea2dfe518c4326fd3 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Tue, 8 May 2018 01:40:22 +0200 Subject: [PATCH] Parallelize (big) sorts in worker. --- server/TracyWorker.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 0d6b4919..fb89617a 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -5,6 +5,7 @@ #endif #include +#include #include #include "../common/TracyProtocol.hpp" @@ -14,7 +15,6 @@ #include "TracyWorker.hpp" #include "tracy_flat_hash_map.hpp" -#include "tracy_pdqsort.h" namespace tracy { @@ -455,7 +455,7 @@ Worker::Worker( FileRead& f, EventType::Type eventMask ) for( auto& v : m_data.sourceLocationZones ) { auto& zones = v.second.zones; - pdqsort_branchless( zones.begin(), zones.end(), []( const auto& lhs, const auto& rhs ) { return lhs.zone->start < rhs.zone->start; } ); + std::sort( std::execution::par_unseq, zones.begin(), zones.end(), []( const auto& lhs, const auto& rhs ) { return lhs.zone->start < rhs.zone->start; } ); } std::lock_guard lock( m_data.lock ); m_data.sourceLocationZonesReady = true; @@ -1296,7 +1296,7 @@ void Worker::HandlePostponedPlots() if( src.empty() ) continue; if( std::chrono::duration_cast( std::chrono::high_resolution_clock::now().time_since_epoch() ).count() - plot->postponeTime < 100 ) continue; auto& dst = plot->data; - pdqsort_branchless( src.begin(), src.end(), [] ( const auto& l, const auto& r ) { return l.time < r.time; } ); + std::sort( std::execution::par_unseq, src.begin(), src.end(), [] ( const auto& l, const auto& r ) { return l.time < r.time; } ); const auto ds = std::lower_bound( dst.begin(), dst.end(), src.front().time, [] ( const auto& l, const auto& r ) { return l.time < r; } ); const auto dsd = std::distance( dst.begin(), ds ) ; const auto de = std::lower_bound( ds, dst.end(), src.back().time, [] ( const auto& l, const auto& r ) { return l.time < r; } ); @@ -1919,7 +1919,7 @@ void Worker::CreateMemAllocPlot() void Worker::ReconstructMemAllocPlot() { auto& mem = m_data.memory; - pdqsort_branchless( mem.frees.begin(), mem.frees.end(), [&mem] ( const auto& lhs, const auto& rhs ) { return mem.data[lhs].timeFree < mem.data[rhs].timeFree; } ); + std::sort( std::execution::par_unseq, mem.frees.begin(), mem.frees.end(), [&mem] ( const auto& lhs, const auto& rhs ) { return mem.data[lhs].timeFree < mem.data[rhs].timeFree; } ); const auto psz = mem.data.size() + mem.frees.size() + 1;