Cap memory usage in path_create bench.
Memory usage grows unbounded in path_create without this patch (growing the
paths). This bench also somewhat needlessly cycles through 32 paths, so now
we just work with one.
Peak memory usage drops from ~2-3G to ~150M. This should fix the NexusS crashes,
or at least get us to the next one.
BUG=skia:1687
R=caryclark@google.com
Author: mtklein@google.com
Review URL: https://codereview.chromium.org/111283007
git-svn-id: http://skia.googlecode.com/svn/trunk@12925 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/PathBench.cpp b/bench/PathBench.cpp
index 67bc901..e11aad7 100644
--- a/bench/PathBench.cpp
+++ b/bench/PathBench.cpp
@@ -327,27 +327,24 @@
virtual void onPreDraw() SK_OVERRIDE {
this->createData(10, 100);
- fPaths.reset(kPathCnt);
}
virtual void onDraw(const int loops, SkCanvas*) SK_OVERRIDE {
for (int i = 0; i < loops; ++i) {
- this->makePath(&fPaths[i & (kPathCnt - 1)]);
+ if (i % 1000 == 0) {
+ fPath.reset(); // PathRef memory can grow without bound otherwise.
+ }
+ this->makePath(&fPath);
}
this->restartMakingPaths();
}
virtual void onPostDraw() SK_OVERRIDE {
this->finishedMakingPaths();
- fPaths.reset(0);
}
private:
- enum {
- // must be a pow 2
- kPathCnt = 1 << 5,
- };
- SkAutoTArray<SkPath> fPaths;
+ SkPath fPath;
typedef RandomPathBench INHERITED;
};