]> git.sesse.net Git - plocate/commitdiff
Merge non-results from worker threads to put less load on Serializer.
authorSteinar H. Gunderson <steinar+git@gunderson.no>
Thu, 15 Oct 2020 21:41:16 +0000 (23:41 +0200)
committerSteinar H. Gunderson <steinar+git@gunderson.no>
Thu, 15 Oct 2020 21:41:16 +0000 (23:41 +0200)
plocate.cpp

index e8fbff3012cccaac30baa2cf2d2b692dfa1d3b64..926bbf1977831562217829cc07e7aaddf56ca4f8 100644 (file)
@@ -432,7 +432,11 @@ public:
        void print(uint64_t seq, uint64_t skip, const string msg) override
        {
                lock_guard<mutex> lock(wt->result_mu);
-               wt->results.emplace_back(WorkerThread::Result{ seq, skip, move(msg) });
+               if (msg.empty() && !wt->results.empty() && wt->results.back().seq + wt->results.back().skip == seq) {
+                       wt->results.back().skip += skip;
+               } else {
+                       wt->results.emplace_back(WorkerThread::Result{ seq, skip, move(msg) });
+               }
        }
 
 private: