Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(468)

Unified Diff: tools/skpdiff/SkDiffContext.cpp

Issue 1184373003: Add sk_parallel_for() (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/SkpSkGrTest.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/skpdiff/SkDiffContext.cpp
diff --git a/tools/skpdiff/SkDiffContext.cpp b/tools/skpdiff/SkDiffContext.cpp
index c422636f6e8c10bb089739f668b3941239f6083c..d14546046c33bc6586a4c8fd34bc29b5fd4a25d3 100644
--- a/tools/skpdiff/SkDiffContext.cpp
+++ b/tools/skpdiff/SkDiffContext.cpp
@@ -209,26 +209,6 @@ void SkDiffContext::addDiff(const char* baselinePath, const char* testPath) {
}
}
-class SkThreadedDiff : public SkRunnable {
-public:
- SkThreadedDiff() : fDiffContext(NULL) { }
-
- void setup(SkDiffContext* diffContext, const SkString& baselinePath, const SkString& testPath) {
- fDiffContext = diffContext;
- fBaselinePath = baselinePath;
- fTestPath = testPath;
- }
-
- void run() override {
- fDiffContext->addDiff(fBaselinePath.c_str(), fTestPath.c_str());
- }
-
-private:
- SkDiffContext* fDiffContext;
- SkString fBaselinePath;
- SkString fTestPath;
-};
-
void SkDiffContext::diffDirectories(const char baselinePath[], const char testPath[]) {
// Get the files in the baseline, we will then look for those inside the test path
SkTArray<SkString> baselineEntries;
@@ -237,12 +217,8 @@ void SkDiffContext::diffDirectories(const char baselinePath[], const char testPa
return;
}
- SkTaskGroup tg;
- SkTArray<SkThreadedDiff> runnableDiffs;
- runnableDiffs.reset(baselineEntries.count());
-
- for (int x = 0; x < baselineEntries.count(); x++) {
- const char* baseFilename = baselineEntries[x].c_str();
+ sk_parallel_for(baselineEntries.count(), [&](int i) {
+ const char* baseFilename = baselineEntries[i].c_str();
// Find the real location of each file to compare
SkString baselineFile = SkOSPath::Join(baselinePath, baseFilename);
@@ -250,13 +226,11 @@ void SkDiffContext::diffDirectories(const char baselinePath[], const char testPa
// Check that the test file exists and is a file
if (sk_exists(testFile.c_str()) && !sk_isdir(testFile.c_str())) {
- // Queue up the comparison with the differ
- runnableDiffs[x].setup(this, baselineFile, testFile);
- tg.add(&runnableDiffs[x]);
+ this->addDiff(baselineFile.c_str(), testFile.c_str());
} else {
SkDebugf("Baseline file \"%s\" has no corresponding test file\n", baselineFile.c_str());
}
- }
+ });
}
@@ -281,15 +255,9 @@ void SkDiffContext::diffPatterns(const char baselinePattern[], const char testPa
return;
}
- SkTaskGroup tg;
- SkTArray<SkThreadedDiff> runnableDiffs;
- runnableDiffs.reset(baselineEntries.count());
-
- for (int x = 0; x < baselineEntries.count(); x++) {
- runnableDiffs[x].setup(this, baselineEntries[x], testEntries[x]);
- tg.add(&runnableDiffs[x]);
- }
- tg.wait();
+ sk_parallel_for(baselineEntries.count(), [&](int i) {
+ this->addDiff(baselineEntries[i].c_str(), testEntries[i].c_str());
+ });
}
void SkDiffContext::outputRecords(SkWStream& stream, bool useJSONP) {
« no previous file with comments | « tests/SkpSkGrTest.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698