| Index: bench/nanobench.cpp
|
| diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp
|
| index fedc9ea29f45ce4e695469229c4037393da610df..6968d6dac21deb835f11063a4731b3077673398e 100644
|
| --- a/bench/nanobench.cpp
|
| +++ b/bench/nanobench.cpp
|
| @@ -64,11 +64,10 @@ DEFINE_string(outResultsFile, "", "If given, write results here as JSON.");
|
| DEFINE_int32(maxCalibrationAttempts, 3,
|
| "Try up to this many times to guess loops for a bench, or skip the bench.");
|
| DEFINE_int32(maxLoops, 1000000, "Never run a bench more times than this.");
|
| +DEFINE_string(properties, "",
|
| + "Space-separated key/value pairs to add to JSON identifying this nanobench run.");
|
| DEFINE_string(key, "",
|
| "Space-separated key/value pairs to add to JSON identifying this bench config.");
|
| -DEFINE_string(options, "",
|
| - "Space-separated option/value pairs to add to JSON, logging extra info.");
|
| -DEFINE_string(gitHash, "", "Git hash to add to JSON.");
|
|
|
| DEFINE_string(clip, "0,0,1000,1000", "Clip for SKPs.");
|
| DEFINE_string(scales, "1.0", "Space-separated scales for SKPs.");
|
| @@ -392,20 +391,6 @@ static void create_targets(SkTDArray<Target*>* targets, Benchmark* b,
|
| }
|
| }
|
|
|
| -static void fill_static_options(ResultsWriter* log) {
|
| -#if defined(SK_BUILD_FOR_WIN32)
|
| - log->option("system", "WIN32");
|
| -#elif defined(SK_BUILD_FOR_MAC)
|
| - log->option("system", "MAC");
|
| -#elif defined(SK_BUILD_FOR_ANDROID)
|
| - log->option("system", "ANDROID");
|
| -#elif defined(SK_BUILD_FOR_UNIX)
|
| - log->option("system", "UNIX");
|
| -#else
|
| - log->option("system", "other");
|
| -#endif
|
| -}
|
| -
|
| #if SK_SUPPORT_GPU
|
| static void fill_gpu_options(ResultsWriter* log, SkGLContextHelper* ctx) {
|
| const GrGLubyte* version;
|
| @@ -553,30 +538,25 @@ int nanobench_main() {
|
| }
|
| }
|
|
|
| - MultiResultsWriter log;
|
| - SkAutoTDelete<NanoJSONResultsWriter> json;
|
| + SkAutoTDelete<ResultsWriter> log(SkNEW(ResultsWriter));
|
| if (!FLAGS_outResultsFile.isEmpty()) {
|
| - const char* gitHash = FLAGS_gitHash.isEmpty() ? "unknown-revision" : FLAGS_gitHash[0];
|
| - json.reset(SkNEW(NanoJSONResultsWriter(FLAGS_outResultsFile[0], gitHash)));
|
| - log.add(json.get());
|
| + log.reset(SkNEW(NanoJSONResultsWriter(FLAGS_outResultsFile[0])));
|
| }
|
| - CallEnd<MultiResultsWriter> ender(log);
|
|
|
| - if (1 == FLAGS_key.count() % 2) {
|
| - SkDebugf("ERROR: --key must be passed with an even number of arguments.\n");
|
| + if (1 == FLAGS_properties.count() % 2) {
|
| + SkDebugf("ERROR: --properties must be passed with an even number of arguments.\n");
|
| return 1;
|
| }
|
| - for (int i = 1; i < FLAGS_key.count(); i += 2) {
|
| - log.key(FLAGS_key[i-1], FLAGS_key[i]);
|
| + for (int i = 1; i < FLAGS_properties.count(); i += 2) {
|
| + log->property(FLAGS_properties[i-1], FLAGS_properties[i]);
|
| }
|
|
|
| - fill_static_options(&log);
|
| - if (1 == FLAGS_options.count() % 2) {
|
| - SkDebugf("ERROR: --options must be passed with an even number of arguments.\n");
|
| + if (1 == FLAGS_key.count() % 2) {
|
| + SkDebugf("ERROR: --key must be passed with an even number of arguments.\n");
|
| return 1;
|
| }
|
| - for (int i = 1; i < FLAGS_options.count(); i += 2) {
|
| - log.option(FLAGS_options[i-1], FLAGS_options[i]);
|
| + for (int i = 1; i < FLAGS_key.count(); i += 2) {
|
| + log->key(FLAGS_key[i-1], FLAGS_key[i]);
|
| }
|
|
|
| const double overhead = estimate_timer_overhead();
|
| @@ -608,7 +588,7 @@ int nanobench_main() {
|
| create_targets(&targets, bench.get(), configs);
|
|
|
| if (!targets.isEmpty()) {
|
| - log.bench(bench->getName(), bench->getSize().fX, bench->getSize().fY);
|
| + log->bench(bench->getName(), bench->getSize().fX, bench->getSize().fY);
|
| bench->preDraw();
|
| }
|
| for (int j = 0; j < targets.count(); j++) {
|
| @@ -644,18 +624,18 @@ int nanobench_main() {
|
| }
|
|
|
| Stats stats(samples.get(), FLAGS_samples);
|
| - log.config(config);
|
| - benchStream.fillCurrentOptions(&log);
|
| + log->config(config);
|
| + benchStream.fillCurrentOptions(log.get());
|
| #if SK_SUPPORT_GPU
|
| if (Benchmark::kGPU_Backend == targets[j]->config.backend) {
|
| - fill_gpu_options(&log, targets[j]->gl);
|
| + fill_gpu_options(log.get(), targets[j]->gl);
|
| }
|
| #endif
|
| - log.timer("min_ms", stats.min);
|
| - log.timer("median_ms", stats.median);
|
| - log.timer("mean_ms", stats.mean);
|
| - log.timer("max_ms", stats.max);
|
| - log.timer("stddev_ms", sqrt(stats.var));
|
| + log->timer("min_ms", stats.min);
|
| + log->timer("median_ms", stats.median);
|
| + log->timer("mean_ms", stats.mean);
|
| + log->timer("max_ms", stats.max);
|
| + log->timer("stddev_ms", sqrt(stats.var));
|
|
|
| if (kAutoTuneLoops != FLAGS_loops) {
|
| if (targets.count() == 1) {
|
|
|