| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include <ctype.h> | 8 #include <ctype.h> |
| 9 | 9 |
| 10 #include "Benchmark.h" | 10 #include "Benchmark.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 DEFINE_bool(gpuCompressAlphaMasks, false, "Compress masks generated from falling
back to " | 63 DEFINE_bool(gpuCompressAlphaMasks, false, "Compress masks generated from falling
back to " |
| 64 "software path rendering."); | 64 "software path rendering."); |
| 65 | 65 |
| 66 DEFINE_string(outResultsFile, "", "If given, write results here as JSON."); | 66 DEFINE_string(outResultsFile, "", "If given, write results here as JSON."); |
| 67 DEFINE_int32(maxCalibrationAttempts, 3, | 67 DEFINE_int32(maxCalibrationAttempts, 3, |
| 68 "Try up to this many times to guess loops for a bench, or skip the
bench."); | 68 "Try up to this many times to guess loops for a bench, or skip the
bench."); |
| 69 DEFINE_int32(maxLoops, 1000000, "Never run a bench more times than this."); | 69 DEFINE_int32(maxLoops, 1000000, "Never run a bench more times than this."); |
| 70 DEFINE_string(clip, "0,0,1000,1000", "Clip for SKPs."); | 70 DEFINE_string(clip, "0,0,1000,1000", "Clip for SKPs."); |
| 71 DEFINE_string(scales, "1.0", "Space-separated scales for SKPs."); | 71 DEFINE_string(scales, "1.0", "Space-separated scales for SKPs."); |
| 72 DEFINE_bool(bbh, true, "Build a BBH for SKPs?"); | 72 DEFINE_bool(bbh, true, "Build a BBH for SKPs?"); |
| 73 DEFINE_int32(flushEvery, 10, "Flush --outResultsFile every Nth run."); |
| 73 | 74 |
| 74 static SkString humanize(double ms) { | 75 static SkString humanize(double ms) { |
| 75 if (FLAGS_verbose) return SkStringPrintf("%llu", (uint64_t)(ms*1e6)); | 76 if (FLAGS_verbose) return SkStringPrintf("%llu", (uint64_t)(ms*1e6)); |
| 76 if (ms > 1e+3) return SkStringPrintf("%.3gs", ms/1e3); | 77 if (ms > 1e+3) return SkStringPrintf("%.3gs", ms/1e3); |
| 77 if (ms < 1e-3) return SkStringPrintf("%.3gns", ms*1e6); | 78 if (ms < 1e-3) return SkStringPrintf("%.3gns", ms*1e6); |
| 78 #ifdef SK_BUILD_FOR_WIN | 79 #ifdef SK_BUILD_FOR_WIN |
| 79 if (ms < 1) return SkStringPrintf("%.3gus", ms*1e3); | 80 if (ms < 1) return SkStringPrintf("%.3gus", ms*1e3); |
| 80 #else | 81 #else |
| 81 if (ms < 1) return SkStringPrintf("%.3gµs", ms*1e3); | 82 if (ms < 1) return SkStringPrintf("%.3gµs", ms*1e3); |
| 82 #endif | 83 #endif |
| (...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 } else if (FLAGS_quiet) { | 622 } else if (FLAGS_quiet) { |
| 622 SkDebugf("median\tbench\tconfig\n"); | 623 SkDebugf("median\tbench\tconfig\n"); |
| 623 } else { | 624 } else { |
| 624 SkDebugf("maxrss\tloops\tmin\tmedian\tmean\tmax\tstddev\t%-*s\tconfig\tb
ench\n", | 625 SkDebugf("maxrss\tloops\tmin\tmedian\tmean\tmax\tstddev\t%-*s\tconfig\tb
ench\n", |
| 625 FLAGS_samples, "samples"); | 626 FLAGS_samples, "samples"); |
| 626 } | 627 } |
| 627 | 628 |
| 628 SkTDArray<Config> configs; | 629 SkTDArray<Config> configs; |
| 629 create_configs(&configs); | 630 create_configs(&configs); |
| 630 | 631 |
| 632 int runs = 0; |
| 631 BenchmarkStream benchStream; | 633 BenchmarkStream benchStream; |
| 632 while (Benchmark* b = benchStream.next()) { | 634 while (Benchmark* b = benchStream.next()) { |
| 633 SkAutoTDelete<Benchmark> bench(b); | 635 SkAutoTDelete<Benchmark> bench(b); |
| 634 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, bench->getUniqueName()))
{ | 636 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, bench->getUniqueName()))
{ |
| 635 continue; | 637 continue; |
| 636 } | 638 } |
| 637 | 639 |
| 638 SkTDArray<Target*> targets; | 640 SkTDArray<Target*> targets; |
| 639 create_targets(&targets, bench.get(), configs); | 641 create_targets(&targets, bench.get(), configs); |
| 640 | 642 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 #if SK_SUPPORT_GPU | 675 #if SK_SUPPORT_GPU |
| 674 if (Benchmark::kGPU_Backend == targets[j]->config.backend) { | 676 if (Benchmark::kGPU_Backend == targets[j]->config.backend) { |
| 675 fill_gpu_options(log.get(), targets[j]->gl); | 677 fill_gpu_options(log.get(), targets[j]->gl); |
| 676 } | 678 } |
| 677 #endif | 679 #endif |
| 678 log->timer("min_ms", stats.min); | 680 log->timer("min_ms", stats.min); |
| 679 log->timer("median_ms", stats.median); | 681 log->timer("median_ms", stats.median); |
| 680 log->timer("mean_ms", stats.mean); | 682 log->timer("mean_ms", stats.mean); |
| 681 log->timer("max_ms", stats.max); | 683 log->timer("max_ms", stats.max); |
| 682 log->timer("stddev_ms", sqrt(stats.var)); | 684 log->timer("stddev_ms", sqrt(stats.var)); |
| 685 if (runs++ % FLAGS_flushEvery == 0) { |
| 686 log->flush(); |
| 687 } |
| 683 | 688 |
| 684 if (kAutoTuneLoops != FLAGS_loops) { | 689 if (kAutoTuneLoops != FLAGS_loops) { |
| 685 if (targets.count() == 1) { | 690 if (targets.count() == 1) { |
| 686 config = ""; // Only print the config if we run the same ben
ch on more than one. | 691 config = ""; // Only print the config if we run the same ben
ch on more than one. |
| 687 } | 692 } |
| 688 SkDebugf("%4dM\t%s\t%s\n" | 693 SkDebugf("%4dM\t%s\t%s\n" |
| 689 , sk_tools::getMaxResidentSetSizeMB() | 694 , sk_tools::getMaxResidentSetSizeMB() |
| 690 , bench->getUniqueName() | 695 , bench->getUniqueName() |
| 691 , config); | 696 , config); |
| 692 } else if (FLAGS_verbose) { | 697 } else if (FLAGS_verbose) { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 | 734 |
| 730 return 0; | 735 return 0; |
| 731 } | 736 } |
| 732 | 737 |
| 733 #if !defined SK_BUILD_FOR_IOS | 738 #if !defined SK_BUILD_FOR_IOS |
| 734 int main(int argc, char** argv) { | 739 int main(int argc, char** argv) { |
| 735 SkCommandLineFlags::Parse(argc, argv); | 740 SkCommandLineFlags::Parse(argc, argv); |
| 736 return nanobench_main(); | 741 return nanobench_main(); |
| 737 } | 742 } |
| 738 #endif | 743 #endif |
| OLD | NEW |