| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 "BenchTimer.h" | 8 #include "BenchTimer.h" |
| 9 #include "CrashHandler.h" | 9 #include "CrashHandler.h" |
| 10 #include "ResultsWriter.h" | 10 #include "ResultsWriter.h" |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 DEFINE_string(config, kDefaultsConfigStr, | 248 DEFINE_string(config, kDefaultsConfigStr, |
| 249 "Run configs given. By default, runs the configs marked \"runByDe
fault\" in gConfigs."); | 249 "Run configs given. By default, runs the configs marked \"runByDe
fault\" in gConfigs."); |
| 250 DEFINE_string(logFile, "", "Also write stdout here."); | 250 DEFINE_string(logFile, "", "Also write stdout here."); |
| 251 DEFINE_int32(minMs, 20, "Shortest time we'll allow a benchmark to run."); | 251 DEFINE_int32(minMs, 20, "Shortest time we'll allow a benchmark to run."); |
| 252 DEFINE_int32(maxMs, 4000, "Longest time we'll allow a benchmark to run."); | 252 DEFINE_int32(maxMs, 4000, "Longest time we'll allow a benchmark to run."); |
| 253 DEFINE_bool(runOnce, kIsDebug, "Run each bench exactly once and don't report tim
ings."); | 253 DEFINE_bool(runOnce, kIsDebug, "Run each bench exactly once and don't report tim
ings."); |
| 254 DEFINE_double(error, 0.01, | 254 DEFINE_double(error, 0.01, |
| 255 "Ratio of subsequent bench measurements must drop within 1±error t
o converge."); | 255 "Ratio of subsequent bench measurements must drop within 1±error t
o converge."); |
| 256 DEFINE_string(timeFormat, "%9.2f", "Format to print results, in milliseconds per
1000 loops."); | 256 DEFINE_string(timeFormat, "%9.2f", "Format to print results, in milliseconds per
1000 loops."); |
| 257 DEFINE_bool2(verbose, v, false, "Print more."); | 257 DEFINE_bool2(verbose, v, false, "Print more."); |
| 258 DEFINE_string2(resourcePath, i, "resources", "directory for test resources."); | |
| 259 DEFINE_string(outResultsFile, "", "If given, the results will be written to the
file in JSON format."); | 258 DEFINE_string(outResultsFile, "", "If given, the results will be written to the
file in JSON format."); |
| 260 DEFINE_bool(dryRun, false, "Don't actually run the tests, just print what would
have been done."); | 259 DEFINE_bool(dryRun, false, "Don't actually run the tests, just print what would
have been done."); |
| 261 | 260 |
| 262 // Has this bench converged? First arguments are milliseconds / loop iteration, | 261 // Has this bench converged? First arguments are milliseconds / loop iteration, |
| 263 // last is overall runtime in milliseconds. | 262 // last is overall runtime in milliseconds. |
| 264 static bool HasConverged(double prevPerLoop, double currPerLoop, double currRaw)
{ | 263 static bool HasConverged(double prevPerLoop, double currPerLoop, double currRaw)
{ |
| 265 if (currRaw < FLAGS_minMs) { | 264 if (currRaw < FLAGS_minMs) { |
| 266 return false; | 265 return false; |
| 267 } | 266 } |
| 268 const double low = 1 - FLAGS_error, high = 1 + FLAGS_error; | 267 const double low = 1 - FLAGS_error, high = 1 + FLAGS_error; |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 if (kNormal_BenchMode != benchMode) { | 339 if (kNormal_BenchMode != benchMode) { |
| 341 // Non-rendering configs only run in normal mode | 340 // Non-rendering configs only run in normal mode |
| 342 for (int i = 0; i < configs.count(); ++i) { | 341 for (int i = 0; i < configs.count(); ++i) { |
| 343 const Config& config = gConfigs[configs[i]]; | 342 const Config& config = gConfigs[configs[i]]; |
| 344 if (SkBenchmark::kNonRendering_Backend == config.backend) { | 343 if (SkBenchmark::kNonRendering_Backend == config.backend) { |
| 345 configs.remove(i, 1); | 344 configs.remove(i, 1); |
| 346 --i; | 345 --i; |
| 347 } | 346 } |
| 348 } | 347 } |
| 349 } | 348 } |
| 350 // Set the resource path. | |
| 351 if (!FLAGS_resourcePath.isEmpty()) { | |
| 352 SkBenchmark::SetResourcePath(FLAGS_resourcePath[0]); | |
| 353 } | |
| 354 | 349 |
| 355 #if SK_SUPPORT_GPU | 350 #if SK_SUPPORT_GPU |
| 356 for (int i = 0; i < configs.count(); ++i) { | 351 for (int i = 0; i < configs.count(); ++i) { |
| 357 const Config& config = gConfigs[configs[i]]; | 352 const Config& config = gConfigs[configs[i]]; |
| 358 | 353 |
| 359 if (SkBenchmark::kGPU_Backend == config.backend) { | 354 if (SkBenchmark::kGPU_Backend == config.backend) { |
| 360 GrContext* context = gContextFactory.get(config.contextType); | 355 GrContext* context = gContextFactory.get(config.contextType); |
| 361 if (NULL == context) { | 356 if (NULL == context) { |
| 362 SkDebugf("GrContext could not be created for config %s. Config w
ill be skipped.\n", | 357 SkDebugf("GrContext could not be created for config %s. Config w
ill be skipped.\n", |
| 363 config.name); | 358 config.name); |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 gContextFactory.destroyContexts(); | 677 gContextFactory.destroyContexts(); |
| 683 #endif | 678 #endif |
| 684 return 0; | 679 return 0; |
| 685 } | 680 } |
| 686 | 681 |
| 687 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) | 682 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) |
| 688 int main(int argc, char * const argv[]) { | 683 int main(int argc, char * const argv[]) { |
| 689 return tool_main(argc, (char**) argv); | 684 return tool_main(argc, (char**) argv); |
| 690 } | 685 } |
| 691 #endif | 686 #endif |
| OLD | NEW |