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

Unified Diff: bench/MemoryBench.cpp

Issue 24251008: Add sk_calloc. Remove SkMemory_stdlib, which seems unused. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: use sk_out_of_memory Created 7 years, 3 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 | « no previous file | gyp/tests.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: bench/MemoryBench.cpp
diff --git a/bench/MemoryBench.cpp b/bench/MemoryBench.cpp
index 6e8e4a8588af45e8c1191794eb74ae24a6281af5..418e149f80bdd801cdc7a51f2c0b081e6113d6f9 100644
--- a/bench/MemoryBench.cpp
+++ b/bench/MemoryBench.cpp
@@ -52,3 +52,108 @@ private:
DEF_BENCH( return new ChunkAllocBench(64); )
DEF_BENCH( return new ChunkAllocBench(8*1024); )
+
+static int* calloc(size_t num) {
+ return (int*)sk_calloc_throw(num*sizeof(int));
+}
+
+static int* malloc_bzero(size_t num) {
+ const size_t bytes = num*sizeof(int);
+ int* ints = (int*)sk_malloc_throw(bytes);
+ sk_bzero(ints, bytes);
+ return ints;
+}
+
+class ZerosBench : public SkBenchmark {
+ size_t fNum;
+ bool fRead;
+ bool fWrite;
+ bool fUseCalloc;
+ SkString fName;
+public:
+ ZerosBench(size_t num, bool read, bool write, bool useCalloc)
+ : fNum(num)
+ , fRead(read)
+ , fWrite(write)
+ , fUseCalloc(useCalloc) {
+ fName.printf("memory_%s", useCalloc ? "calloc" : "malloc_bzero");
+ if (read && write) {
+ fName.appendf("_rw");
+ } else if (read) {
+ fName.appendf("_r");
+ } else if (write) {
+ fName.appendf("_w");
+ }
+ fName.appendf("_"SK_SIZE_T_SPECIFIER, num);
+ fIsRendering = false;
+ }
+
+protected:
+ virtual const char* onGetName() SK_OVERRIDE {
+ return fName.c_str();
+ }
+
+ virtual void onDraw(SkCanvas*) SK_OVERRIDE {
+ for (int i = 0; i < this->getLoops(); i++) {
+ int* zeros = fUseCalloc ? calloc(fNum) : malloc_bzero(fNum);
+ if (fRead) {
+ volatile int x = 15;
+ for (size_t j = 0; j < fNum; j++) {
+ x ^= zeros[j];
+ }
+ }
+ if (fWrite) {
+ for (size_t j = 0; j < fNum; j++) {
+ zeros[j] = 15;
+ }
+ }
+ sk_free(zeros);
+ }
+ }
+};
+
+// zero count r w useCalloc?
+DEF_BENCH(return new ZerosBench(1024*1024, 0, 0, 0))
+DEF_BENCH(return new ZerosBench(1024*1024, 0, 0, 1))
+DEF_BENCH(return new ZerosBench(1024*1024, 0, 1, 0))
+DEF_BENCH(return new ZerosBench(1024*1024, 0, 1, 1))
+DEF_BENCH(return new ZerosBench(1024*1024, 1, 0, 0))
+DEF_BENCH(return new ZerosBench(1024*1024, 1, 0, 1))
+DEF_BENCH(return new ZerosBench(1024*1024, 1, 1, 0))
+DEF_BENCH(return new ZerosBench(1024*1024, 1, 1, 1))
+
+DEF_BENCH(return new ZerosBench(256*1024, 0, 0, 0))
+DEF_BENCH(return new ZerosBench(256*1024, 0, 0, 1))
+DEF_BENCH(return new ZerosBench(256*1024, 0, 1, 0))
+DEF_BENCH(return new ZerosBench(256*1024, 0, 1, 1))
+DEF_BENCH(return new ZerosBench(256*1024, 1, 0, 0))
+DEF_BENCH(return new ZerosBench(256*1024, 1, 0, 1))
+DEF_BENCH(return new ZerosBench(256*1024, 1, 1, 0))
+DEF_BENCH(return new ZerosBench(256*1024, 1, 1, 1))
+
+DEF_BENCH(return new ZerosBench(4*1024, 0, 0, 0))
+DEF_BENCH(return new ZerosBench(4*1024, 0, 0, 1))
+DEF_BENCH(return new ZerosBench(4*1024, 0, 1, 0))
+DEF_BENCH(return new ZerosBench(4*1024, 0, 1, 1))
+DEF_BENCH(return new ZerosBench(4*1024, 1, 0, 0))
+DEF_BENCH(return new ZerosBench(4*1024, 1, 0, 1))
+DEF_BENCH(return new ZerosBench(4*1024, 1, 1, 0))
+DEF_BENCH(return new ZerosBench(4*1024, 1, 1, 1))
+
+DEF_BENCH(return new ZerosBench(300, 0, 0, 0))
+DEF_BENCH(return new ZerosBench(300, 0, 0, 1))
+DEF_BENCH(return new ZerosBench(300, 0, 1, 0))
+DEF_BENCH(return new ZerosBench(300, 0, 1, 1))
+DEF_BENCH(return new ZerosBench(300, 1, 0, 0))
+DEF_BENCH(return new ZerosBench(300, 1, 0, 1))
+DEF_BENCH(return new ZerosBench(300, 1, 1, 0))
+DEF_BENCH(return new ZerosBench(300, 1, 1, 1))
+
+DEF_BENCH(return new ZerosBench(4, 0, 0, 0))
+DEF_BENCH(return new ZerosBench(4, 0, 0, 1))
+DEF_BENCH(return new ZerosBench(4, 0, 1, 0))
+DEF_BENCH(return new ZerosBench(4, 0, 1, 1))
+DEF_BENCH(return new ZerosBench(4, 1, 0, 0))
+DEF_BENCH(return new ZerosBench(4, 1, 0, 1))
+DEF_BENCH(return new ZerosBench(4, 1, 1, 0))
+DEF_BENCH(return new ZerosBench(4, 1, 1, 1))
« no previous file with comments | « no previous file | gyp/tests.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698