Index: bench/nanobench.cpp |
diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp |
index 0a374cac8dd15b044e5e7b475016e03ccfa435ac..71a412d19df3db9f19b608c0a25a5c44881c5b64 100644 |
--- a/bench/nanobench.cpp |
+++ b/bench/nanobench.cpp |
@@ -38,6 +38,9 @@ DEFINE_string(config, "nonrendering 8888 gpu", "Configs to measure. Options: " |
DEFINE_double(gpuMs, 5, "Target bench time in millseconds for GPU."); |
DEFINE_int32(gpuFrameLag, 5, "Overestimate of maximum number of frames GPU allows to lag."); |
+DEFINE_bool(cpu, true, "Master switch for CPU-bound work."); |
+DEFINE_bool(gpu, true, "Master switch for GPU-bound work."); |
+ |
static SkString humanize(double ms) { |
if (ms > 1e+3) return SkStringPrintf("%.3gs", ms/1e3); |
@@ -193,9 +196,11 @@ static void create_targets(Benchmark* bench, SkTDArray<Target*>* targets) { |
t->surface.reset(code); \ |
targets->push(t); \ |
} |
- CPU_TARGET(nonrendering, kNonRendering_Backend, NULL) |
- CPU_TARGET(8888, kRaster_Backend, SkSurface::NewRaster(_8888)) |
- CPU_TARGET(565, kRaster_Backend, SkSurface::NewRaster(_565)) |
+ if (FLAGS_cpu) { |
+ CPU_TARGET(nonrendering, kNonRendering_Backend, NULL) |
+ CPU_TARGET(8888, kRaster_Backend, SkSurface::NewRaster(_8888)) |
+ CPU_TARGET(565, kRaster_Backend, SkSurface::NewRaster(_565)) |
+ } |
#if SK_SUPPORT_GPU |
#define GPU_TARGET(config, ctxType, info, samples) \ |
@@ -204,16 +209,18 @@ static void create_targets(Benchmark* bench, SkTDArray<Target*>* targets) { |
t->gl = gGrFactory.getGLContext(ctxType); \ |
targets->push(t); \ |
} |
- GPU_TARGET(gpu, GrContextFactory::kNative_GLContextType, _8888, 0) |
- GPU_TARGET(msaa4, GrContextFactory::kNative_GLContextType, _8888, 4) |
- GPU_TARGET(msaa16, GrContextFactory::kNative_GLContextType, _8888, 16) |
- GPU_TARGET(nvprmsaa4, GrContextFactory::kNVPR_GLContextType, _8888, 4) |
- GPU_TARGET(nvprmsaa16, GrContextFactory::kNVPR_GLContextType, _8888, 16) |
- GPU_TARGET(debug, GrContextFactory::kDebug_GLContextType, _8888, 0) |
- GPU_TARGET(nullgpu, GrContextFactory::kNull_GLContextType, _8888, 0) |
- #if SK_ANGLE |
- GPU_TARGET(angle, GrContextFactory::kANGLE_GLContextType, _8888, 0) |
- #endif |
+ if (FLAGS_gpu) { |
+ GPU_TARGET(gpu, GrContextFactory::kNative_GLContextType, _8888, 0) |
+ GPU_TARGET(msaa4, GrContextFactory::kNative_GLContextType, _8888, 4) |
+ GPU_TARGET(msaa16, GrContextFactory::kNative_GLContextType, _8888, 16) |
+ GPU_TARGET(nvprmsaa4, GrContextFactory::kNVPR_GLContextType, _8888, 4) |
+ GPU_TARGET(nvprmsaa16, GrContextFactory::kNVPR_GLContextType, _8888, 16) |
+ GPU_TARGET(debug, GrContextFactory::kDebug_GLContextType, _8888, 0) |
+ GPU_TARGET(nullgpu, GrContextFactory::kNull_GLContextType, _8888, 0) |
+ #if SK_ANGLE |
+ GPU_TARGET(angle, GrContextFactory::kANGLE_GLContextType, _8888, 0) |
+ #endif |
+ } |
#endif |
} |
@@ -226,14 +233,12 @@ int tool_main(int argc, char** argv) { |
const double overhead = estimate_timer_overhead(); |
SkAutoTMalloc<double> samples(FLAGS_samples); |
- // TODO: display add median, use it in --quiet mode |
- |
if (FLAGS_verbose) { |
// No header. |
} else if (FLAGS_quiet) { |
- SkDebugf("min\tbench\tconfig\n"); |
+ SkDebugf("median\tbench\tconfig\n"); |
} else { |
- SkDebugf("loops\tmin\tmean\tmax\tstddev\tconfig\tbench\n"); |
+ SkDebugf("loops\tmin\tmedian\tmean\tmax\tstddev\tconfig\tbench\n"); |
} |
for (const BenchRegistry* r = BenchRegistry::Head(); r != NULL; r = r->next()) { |
@@ -269,12 +274,13 @@ int tool_main(int argc, char** argv) { |
if (targets.count() == 1) { |
config = ""; // Only print the config if we run the same bench on more than one. |
} |
- SkDebugf("%s\t%s\t%s\n", humanize(stats.min).c_str(), bench->getName(), config); |
+ SkDebugf("%s\t%s\t%s\n", humanize(stats.median).c_str(), bench->getName(), config); |
} else { |
const double stddev_percent = 100 * sqrt(stats.var) / stats.mean; |
- SkDebugf("%d\t%s\t%s\t%s\t%.0f%%\t%s\t%s\n" |
+ SkDebugf("%d\t%s\t%s\t%s\t%s\t%.0f%%\t%s\t%s\n" |
, loops |
, humanize(stats.min).c_str() |
+ , humanize(stats.median).c_str() |
, humanize(stats.mean).c_str() |
, humanize(stats.max).c_str() |
, stddev_percent |