Remove custom SkSort algorithms.
SortBench shows that SkTQSort and SkTHeapSort are inferior to std::sort.
The difference is small on randomized inputs, but quite significant for
semi-ordered inputs (forward/backward/repeated). There doesn't seem to
to be any compelling advantage to SkTQSort.
Nanobench results: https://screenshot.googleplex.com/9JOLV1d6Z0u
(These performance numbers are from an optimized build my local machine;
it's possible that we might see different results on the test bots.)
Change-Id: Iaf19563041547eae7de2953be249129108f093b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/302295
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/src/pathops/SkPathOpsCommon.cpp b/src/pathops/SkPathOpsCommon.cpp
index a4d0fcd..e51a53b 100644
--- a/src/pathops/SkPathOpsCommon.cpp
+++ b/src/pathops/SkPathOpsCommon.cpp
@@ -6,7 +6,6 @@
*/
#include "include/private/SkMacros.h"
-#include "src/core/SkTSort.h"
#include "src/pathops/SkAddIntersections.h"
#include "src/pathops/SkOpCoincidence.h"
#include "src/pathops/SkOpEdgeBuilder.h"
@@ -165,7 +164,8 @@
return false;
}
if (count > 1) {
- SkTQSort<SkOpContour>(list.begin(), list.end() - 1);
+ std::sort(list.begin(), list.end(),
+ [](const SkOpContour* a, const SkOpContour* b) { return *a < *b; });
}
contour = list[0];
SkOpContourHead* contourHead = static_cast<SkOpContourHead*>(contour);