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

Side by Side Diff: bench/benchmain.cpp

Issue 14746017: add wildcard test name matching to gm (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | gm/gmmain.cpp » ('j') | 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 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "BenchTimer.h" 10 #include "BenchTimer.h"
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 static int findConfig(const char config[]) { 264 static int findConfig(const char config[]) {
265 for (size_t i = 0; i < SK_ARRAY_COUNT(gConfigs); i++) { 265 for (size_t i = 0; i < SK_ARRAY_COUNT(gConfigs); i++) {
266 if (!strcmp(config, gConfigs[i].fName)) { 266 if (!strcmp(config, gConfigs[i].fName)) {
267 return i; 267 return i;
268 } 268 }
269 } 269 }
270 return -1; 270 return -1;
271 } 271 }
272 272
273 static bool skip_name(const SkTDArray<const char*> array, const char name[]) { 273 static bool skip_name(const SkTDArray<const char*> array, const char name[]) {
274 if (0 == array.count()) { 274 // FIXME: this duplicates the logic in skia_test.cpp, gmmain.cpp -- consolid ate
275 // no names, so don't skip anything 275 int count = array.count();
276 return false; 276 size_t testLen = strlen(name);
277 } 277 bool anyExclude = count == 0;
278 for (int i = 0; i < array.count(); ++i) { 278 for (int i = 0; i < array.count(); ++i) {
279 if (strstr(name, array[i])) { 279 const char* matchName = array[i];
280 // found the name, so don't skip 280 size_t matchLen = strlen(matchName);
281 return false; 281 bool matchExclude, matchStart, matchEnd;
282 if ((matchExclude = matchName[0] == '~')) {
283 anyExclude = true;
284 matchName++;
285 matchLen--;
286 }
287 if ((matchStart = matchName[0] == '^')) {
288 matchName++;
289 matchLen--;
290 }
291 if ((matchEnd = matchName[matchLen - 1] == '$')) {
292 matchLen--;
293 }
294 if (matchStart ? (!matchEnd || matchLen == testLen)
295 && strncmp(name, matchName, matchLen) == 0
296 : matchEnd ? matchLen <= testLen
297 && strncmp(name + testLen - matchLen, matchName, matchLen) == 0
298 : strstr(name, matchName) != 0) {
299 return matchExclude;
282 } 300 }
283 } 301 }
284 return true; 302 return !anyExclude;
285 } 303 }
286 304
287 static void help() { 305 static void help() {
288 SkString configsStr; 306 SkString configsStr;
289 static const size_t kConfigCount = SK_ARRAY_COUNT(gConfigs); 307 static const size_t kConfigCount = SK_ARRAY_COUNT(gConfigs);
290 for (size_t i = 0; i < kConfigCount; ++i) { 308 for (size_t i = 0; i < kConfigCount; ++i) {
291 configsStr.appendf("%s%s", gConfigs[i].fName, ((i == kConfigCount - 1) ? "" : "|")); 309 configsStr.appendf("%s%s", gConfigs[i].fName, ((i == kConfigCount - 1) ? "" : "|"));
292 } 310 }
293 311
294 SkDebugf("Usage: bench [-o outDir] [--repeat nr] [--logPerIter] " 312 SkDebugf("Usage: bench [-o outDir] [--repeat nr] [--logPerIter] "
(...skipping 27 matching lines...) Expand all
322 SkDebugf(" --forceDither 1|0 : " 340 SkDebugf(" --forceDither 1|0 : "
323 "Enable/disable dithering, default is disabled.\n"); 341 "Enable/disable dithering, default is disabled.\n");
324 SkDebugf(" --forceBlend 1|0 : " 342 SkDebugf(" --forceBlend 1|0 : "
325 "Enable/disable dithering, default is disabled.\n"); 343 "Enable/disable dithering, default is disabled.\n");
326 #if SK_SUPPORT_GPU 344 #if SK_SUPPORT_GPU
327 SkDebugf(" --gpuCacheSize <bytes> <count>: " 345 SkDebugf(" --gpuCacheSize <bytes> <count>: "
328 "limits gpu cache to bytes size or object count.\n"); 346 "limits gpu cache to bytes size or object count.\n");
329 SkDebugf(" -1 for either value means use the default. 0 for either disa bles the cache.\n"); 347 SkDebugf(" -1 for either value means use the default. 0 for either disa bles the cache.\n");
330 #endif 348 #endif
331 SkDebugf(" --strokeWidth width : The width for path stroke.\n"); 349 SkDebugf(" --strokeWidth width : The width for path stroke.\n");
332 SkDebugf(" --match name : Only run bench whose name is matched.\n"); 350 SkDebugf(" --match [~][^]substring[$] [...] of test name to run.\n"
351 " Multiple matches may be separated by spaces.\n"
352 " ~ causes a matching test to always be skipped\n"
353 " ^ requires the start of the test to match\n"
354 " $ requires the end of the test to match\n"
355 " ^ and $ requires an exact match\n"
356 " If a test does not match any list entry,\n"
357 " it is skipped unless some list entry starts with ~\n" );
333 SkDebugf(" --mode normal|deferred|deferredSilent|record|picturerecord :\n " 358 SkDebugf(" --mode normal|deferred|deferredSilent|record|picturerecord :\n "
334 " Run in the corresponding mode\n" 359 " Run in the corresponding mode\n"
335 " normal, Use a normal canvas to draw to;\n" 360 " normal, Use a normal canvas to draw to;\n"
336 " deferred, Use a deferrred canvas when drawing;\n" 361 " deferred, Use a deferrred canvas when drawing;\n"
337 " deferredSilent, deferred with silent playback;\n" 362 " deferredSilent, deferred with silent playback;\n"
338 " record, Benchmark the time to record to an SkPict ure;\n" 363 " record, Benchmark the time to record to an SkPict ure;\n"
339 " picturerecord, Benchmark the time to do record fr om a \n" 364 " picturerecord, Benchmark the time to do record fr om a \n"
340 " SkPicture to a SkPicture.\n"); 365 " SkPicture to a SkPicture.\n");
341 SkDebugf(" --logFile filename : destination for writing log output, in ad dition to stdout.\n"); 366 SkDebugf(" --logFile filename : destination for writing log output, in ad dition to stdout.\n");
342 SkDebugf(" --config %s:\n", configsStr.c_str()); 367 SkDebugf(" --config %s:\n", configsStr.c_str());
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 return -1; 544 return -1;
520 } 545 }
521 hasStrokeWidth = true; 546 hasStrokeWidth = true;
522 } else { 547 } else {
523 logger.logError("missing arg for --strokeWidth\n"); 548 logger.logError("missing arg for --strokeWidth\n");
524 help(); 549 help();
525 return -1; 550 return -1;
526 } 551 }
527 } else if (strcmp(*argv, "--match") == 0) { 552 } else if (strcmp(*argv, "--match") == 0) {
528 argv++; 553 argv++;
529 if (argv < stop) { 554 while (argv < stop && (*argv)[0] != '-') {
530 *fMatches.append() = *argv; 555 *fMatches.append() = *argv++;
531 } else { 556 }
557 argv--;
558 if (!fMatches.count()) {
532 logger.logError("missing arg for --match\n"); 559 logger.logError("missing arg for --match\n");
533 help(); 560 help();
534 return -1; 561 return -1;
535 } 562 }
536 } else if (strcmp(*argv, "--config") == 0) { 563 } else if (strcmp(*argv, "--config") == 0) {
537 argv++; 564 argv++;
538 if (argv < stop) { 565 if (argv < stop) {
539 int index = findConfig(*argv); 566 int index = findConfig(*argv);
540 if (index >= 0) { 567 if (index >= 0) {
541 *configs.append() = index; 568 *configs.append() = index;
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 } 982 }
956 983
957 return 0; 984 return 0;
958 } 985 }
959 986
960 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) 987 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
961 int main(int argc, char * const argv[]) { 988 int main(int argc, char * const argv[]) {
962 return tool_main(argc, (char**) argv); 989 return tool_main(argc, (char**) argv);
963 } 990 }
964 #endif 991 #endif
OLDNEW
« no previous file with comments | « no previous file | gm/gmmain.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698