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

Unified Diff: bench/Sk4fBench.cpp

Issue 1682793002: Slim down Sk4fRoundtrip benches. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 10 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 | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: bench/Sk4fBench.cpp
diff --git a/bench/Sk4fBench.cpp b/bench/Sk4fBench.cpp
index 823e14c0af17a5f4cc7c63732caaee2007581ef6..d5201fa2f0a2292430454789562e57a4f1f7585a 100644
--- a/bench/Sk4fBench.cpp
+++ b/bench/Sk4fBench.cpp
@@ -9,16 +9,8 @@
#include "SkColor.h"
#include "SkNx.h"
-// Used to prevent the compiler from optimizing away the whole loop.
-volatile uint64_t blackhole = 0;
-
-// Not a great random number generator, but it's very fast.
-// The code we're measuring is quite fast, so low overhead is essential.
-static uint64_t lcg_rand(uint64_t* seed) {
- *seed *= 1664525;
- *seed += 1013904223;
- return *seed;
-}
+// Writing into this array prevents the loops from being compiled away.
+static volatile float blackhole[4];
template <typename T>
struct Sk4fRoundtripBench : public Benchmark {
@@ -28,6 +20,7 @@ struct Sk4fRoundtripBench : public Benchmark {
switch (sizeof(T)) {
case 1: return "Sk4f_roundtrip_u8";
case 2: return "Sk4f_roundtrip_u16";
+ case 4: return "Sk4f_roundtrip_int";
}
SkASSERT(false);
return "";
@@ -36,21 +29,16 @@ struct Sk4fRoundtripBench : public Benchmark {
bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; }
void onDraw(int loops, SkCanvas* canvas) override {
- // Unlike blackhole, junk can and probably will be a register.
- uint64_t junk = 0;
- uint64_t seed = 0;
- for (int i = 0; i < loops; i++) {
- uint64_t src = lcg_rand(&seed),
- back;
- auto f = SkNx_cast<float>(SkNx<4,T>::Load(&src));
- SkNx_cast<T>(f).store(&back);
- junk ^= back;
+ Sk4f fs(1,2,3,4);
+ while (loops --> 0) {
+ fs = SkNx_cast<float>(SkNx_cast<T>(fs));
}
- blackhole ^= junk;
+ fs.store((float*)blackhole);
}
};
DEF_BENCH(return new Sk4fRoundtripBench<uint8_t>;)
DEF_BENCH(return new Sk4fRoundtripBench<uint16_t>;)
+DEF_BENCH(return new Sk4fRoundtripBench<int>;)
struct Sk4fGradientBench : public Benchmark {
const char* onGetName() override { return "Sk4f_gradient"; }
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698