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

Side by Side Diff: bench/nanobench.cpp

Issue 552303004: Distinguish common and unique names for skiaperf.com. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: unique name Created 6 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 unified diff | Download patch
« no previous file with comments | « bench/SKPBench.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 156
157 static int kFailedLoops = -2; 157 static int kFailedLoops = -2;
158 static int cpu_bench(const double overhead, Benchmark* bench, SkCanvas* canvas, double* samples) { 158 static int cpu_bench(const double overhead, Benchmark* bench, SkCanvas* canvas, double* samples) {
159 // First figure out approximately how many loops of bench it takes to make o verhead negligible. 159 // First figure out approximately how many loops of bench it takes to make o verhead negligible.
160 double bench_plus_overhead = 0.0; 160 double bench_plus_overhead = 0.0;
161 int round = 0; 161 int round = 0;
162 if (kAutoTuneLoops == FLAGS_loops) { 162 if (kAutoTuneLoops == FLAGS_loops) {
163 while (bench_plus_overhead < overhead) { 163 while (bench_plus_overhead < overhead) {
164 if (round++ == FLAGS_maxCalibrationAttempts) { 164 if (round++ == FLAGS_maxCalibrationAttempts) {
165 SkDebugf("WARNING: Can't estimate loops for %s (%s vs. %s); skip ping.\n", 165 SkDebugf("WARNING: Can't estimate loops for %s (%s vs. %s); skip ping.\n",
166 bench->getName(), HUMANIZE(bench_plus_overhead), HUMANI ZE(overhead)); 166 bench->getUniqueName(), HUMANIZE(bench_plus_overhead), HUMANIZE(overhead));
167 return kFailedLoops; 167 return kFailedLoops;
168 } 168 }
169 bench_plus_overhead = time(1, bench, canvas, NULL); 169 bench_plus_overhead = time(1, bench, canvas, NULL);
170 } 170 }
171 } 171 }
172 172
173 // Later we'll just start and stop the timer once but loop N times. 173 // Later we'll just start and stop the timer once but loop N times.
174 // We'll pick N to make timer overhead negligible: 174 // We'll pick N to make timer overhead negligible:
175 // 175 //
176 // overhead 176 // overhead
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 SkDebugf("maxrss\tloops\tmin\tmedian\tmean\tmax\tstddev\t%-*s\tconfig\tb ench\n", 585 SkDebugf("maxrss\tloops\tmin\tmedian\tmean\tmax\tstddev\t%-*s\tconfig\tb ench\n",
586 FLAGS_samples, "samples"); 586 FLAGS_samples, "samples");
587 } 587 }
588 588
589 SkTDArray<Config> configs; 589 SkTDArray<Config> configs;
590 create_configs(&configs); 590 create_configs(&configs);
591 591
592 BenchmarkStream benchStream; 592 BenchmarkStream benchStream;
593 while (Benchmark* b = benchStream.next()) { 593 while (Benchmark* b = benchStream.next()) {
594 SkAutoTDelete<Benchmark> bench(b); 594 SkAutoTDelete<Benchmark> bench(b);
595 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, bench->getName())) { 595 if (SkCommandLineFlags::ShouldSkip(FLAGS_match, bench->getUniqueName())) {
596 continue; 596 continue;
597 } 597 }
598 598
599 SkTDArray<Target*> targets; 599 SkTDArray<Target*> targets;
600 create_targets(&targets, bench.get(), configs); 600 create_targets(&targets, bench.get(), configs);
601 601
602 if (!targets.isEmpty()) { 602 if (!targets.isEmpty()) {
603 log->bench(bench->getName(), bench->getSize().fX, bench->getSize().f Y); 603 log->bench(bench->getUniqueName(), bench->getSize().fX, bench->getSi ze().fY);
604 bench->preDraw(); 604 bench->preDraw();
605 } 605 }
606 for (int j = 0; j < targets.count(); j++) { 606 for (int j = 0; j < targets.count(); j++) {
607 SkCanvas* canvas = targets[j]->surface.get() ? targets[j]->surface-> getCanvas() : NULL; 607 SkCanvas* canvas = targets[j]->surface.get() ? targets[j]->surface-> getCanvas() : NULL;
608 const char* config = targets[j]->config.name; 608 const char* config = targets[j]->config.name;
609 609
610 const int loops = 610 const int loops =
611 #if SK_SUPPORT_GPU 611 #if SK_SUPPORT_GPU
612 Benchmark::kGPU_Backend == targets[j]->config.backend 612 Benchmark::kGPU_Backend == targets[j]->config.backend
613 ? gpu_bench(targets[j]->gl, bench.get(), canvas, samples.get()) 613 ? gpu_bench(targets[j]->gl, bench.get(), canvas, samples.get())
614 : 614 :
615 #endif 615 #endif
616 cpu_bench( overhead, bench.get(), canvas, samples.get()); 616 cpu_bench( overhead, bench.get(), canvas, samples.get());
617 617
618 if (canvas && !FLAGS_writePath.isEmpty() && FLAGS_writePath[0]) { 618 if (canvas && !FLAGS_writePath.isEmpty() && FLAGS_writePath[0]) {
619 SkString pngFilename = SkOSPath::Join(FLAGS_writePath[0], config ); 619 SkString pngFilename = SkOSPath::Join(FLAGS_writePath[0], config );
620 pngFilename = SkOSPath::Join(pngFilename.c_str(), bench->getName ()); 620 pngFilename = SkOSPath::Join(pngFilename.c_str(), bench->getUniq ueName());
621 pngFilename.append(".png"); 621 pngFilename.append(".png");
622 write_canvas_png(canvas, pngFilename); 622 write_canvas_png(canvas, pngFilename);
623 } 623 }
624 624
625 if (kFailedLoops == loops) { 625 if (kFailedLoops == loops) {
626 // Can't be timed. A warning note has already been printed. 626 // Can't be timed. A warning note has already been printed.
627 continue; 627 continue;
628 } 628 }
629 629
630 Stats stats(samples.get(), FLAGS_samples); 630 Stats stats(samples.get(), FLAGS_samples);
631 log->config(config); 631 log->config(config);
632 log->configOption("name", bench->getName());
632 benchStream.fillCurrentOptions(log.get()); 633 benchStream.fillCurrentOptions(log.get());
633 #if SK_SUPPORT_GPU 634 #if SK_SUPPORT_GPU
634 if (Benchmark::kGPU_Backend == targets[j]->config.backend) { 635 if (Benchmark::kGPU_Backend == targets[j]->config.backend) {
635 fill_gpu_options(log.get(), targets[j]->gl); 636 fill_gpu_options(log.get(), targets[j]->gl);
636 } 637 }
637 #endif 638 #endif
638 log->timer("min_ms", stats.min); 639 log->timer("min_ms", stats.min);
639 log->timer("median_ms", stats.median); 640 log->timer("median_ms", stats.median);
640 log->timer("mean_ms", stats.mean); 641 log->timer("mean_ms", stats.mean);
641 log->timer("max_ms", stats.max); 642 log->timer("max_ms", stats.max);
642 log->timer("stddev_ms", sqrt(stats.var)); 643 log->timer("stddev_ms", sqrt(stats.var));
643 644
644 if (kAutoTuneLoops != FLAGS_loops) { 645 if (kAutoTuneLoops != FLAGS_loops) {
645 if (targets.count() == 1) { 646 if (targets.count() == 1) {
646 config = ""; // Only print the config if we run the same ben ch on more than one. 647 config = ""; // Only print the config if we run the same ben ch on more than one.
647 } 648 }
648 SkDebugf("%s\t%s\n", bench->getName(), config); 649 SkDebugf("%s\t%s\n", bench->getUniqueName(), config);
649 } else if (FLAGS_verbose) { 650 } else if (FLAGS_verbose) {
650 for (int i = 0; i < FLAGS_samples; i++) { 651 for (int i = 0; i < FLAGS_samples; i++) {
651 SkDebugf("%s ", HUMANIZE(samples[i])); 652 SkDebugf("%s ", HUMANIZE(samples[i]));
652 } 653 }
653 SkDebugf("%s\n", bench->getName()); 654 SkDebugf("%s\n", bench->getUniqueName());
654 } else if (FLAGS_quiet) { 655 } else if (FLAGS_quiet) {
655 if (targets.count() == 1) { 656 if (targets.count() == 1) {
656 config = ""; // Only print the config if we run the same ben ch on more than one. 657 config = ""; // Only print the config if we run the same ben ch on more than one.
657 } 658 }
658 SkDebugf("%s\t%s\t%s\n", HUMANIZE(stats.median), bench->getName( ), config); 659 SkDebugf("%s\t%s\t%s\n", HUMANIZE(stats.median), bench->getUniqu eName(), config);
659 } else { 660 } else {
660 const double stddev_percent = 100 * sqrt(stats.var) / stats.mean ; 661 const double stddev_percent = 100 * sqrt(stats.var) / stats.mean ;
661 SkDebugf("%4dM\t%d\t%s\t%s\t%s\t%s\t%.0f%%\t%s\t%s\t%s\n" 662 SkDebugf("%4dM\t%d\t%s\t%s\t%s\t%s\t%.0f%%\t%s\t%s\t%s\n"
662 , sk_tools::getMaxResidentSetSizeMB() 663 , sk_tools::getMaxResidentSetSizeMB()
663 , loops 664 , loops
664 , HUMANIZE(stats.min) 665 , HUMANIZE(stats.min)
665 , HUMANIZE(stats.median) 666 , HUMANIZE(stats.median)
666 , HUMANIZE(stats.mean) 667 , HUMANIZE(stats.mean)
667 , HUMANIZE(stats.max) 668 , HUMANIZE(stats.max)
668 , stddev_percent 669 , stddev_percent
669 , stats.plot.c_str() 670 , stats.plot.c_str()
670 , config 671 , config
671 , bench->getName() 672 , bench->getUniqueName()
672 ); 673 );
673 } 674 }
674 } 675 }
675 targets.deleteAll(); 676 targets.deleteAll();
676 677
677 #if SK_SUPPORT_GPU 678 #if SK_SUPPORT_GPU
678 if (FLAGS_abandonGpuContext) { 679 if (FLAGS_abandonGpuContext) {
679 gGrFactory->abandonContexts(); 680 gGrFactory->abandonContexts();
680 } 681 }
681 if (FLAGS_resetGpuContext || FLAGS_abandonGpuContext) { 682 if (FLAGS_resetGpuContext || FLAGS_abandonGpuContext) {
682 gGrFactory->destroyContexts(); 683 gGrFactory->destroyContexts();
683 } 684 }
684 #endif 685 #endif
685 } 686 }
686 687
687 return 0; 688 return 0;
688 } 689 }
689 690
690 #if !defined SK_BUILD_FOR_IOS 691 #if !defined SK_BUILD_FOR_IOS
691 int main(int argc, char** argv) { 692 int main(int argc, char** argv) {
692 SkCommandLineFlags::Parse(argc, argv); 693 SkCommandLineFlags::Parse(argc, argv);
693 return nanobench_main(); 694 return nanobench_main();
694 } 695 }
695 #endif 696 #endif
OLDNEW
« no previous file with comments | « bench/SKPBench.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698