hsbench: add hyphen support for -T option

This commit is contained in:
Hong, Yang A 2020-04-28 10:14:55 +00:00
parent 3ff54f68e4
commit ec68facfaa
2 changed files with 20 additions and 7 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2019, Intel Corporation * Copyright (c) 2016-2020, Intel Corporation
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
@ -207,7 +207,9 @@ void usage(const char *error) {
printf(" -P Benchmark using PCRE (if supported).\n"); printf(" -P Benchmark using PCRE (if supported).\n");
#endif #endif
#if defined(HAVE_DECL_PTHREAD_SETAFFINITY_NP) || defined(_WIN32) #if defined(HAVE_DECL_PTHREAD_SETAFFINITY_NP) || defined(_WIN32)
printf(" -T CPU,CPU,... Benchmark with threads on these CPUs.\n"); printf(" -T CPU,CPU,... or -T CPU-CPU\n");
printf(" Benchmark with threads on specified CPUs or CPU"
" range.\n");
#endif #endif
printf(" -i DIR Don't compile, load from files in DIR" printf(" -i DIR Don't compile, load from files in DIR"
" instead.\n"); " instead.\n");
@ -354,7 +356,8 @@ void processArgs(int argc, char *argv[], vector<BenchmarkSigs> &sigSets,
case 'T': case 'T':
if (!strToList(optarg, threadCores)) { if (!strToList(optarg, threadCores)) {
usage("Couldn't parse argument to -T flag, should be" usage("Couldn't parse argument to -T flag, should be"
" a list of positive integers."); " a list of positive integers or 2 integers"
" connected with hyphen.");
exit(1); exit(1);
} }
break; break;

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2015-2019, Intel Corporation * Copyright (c) 2015-2020, Intel Corporation
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
@ -54,8 +54,8 @@ inline bool fromString(const std::string &s, T& val)
return true; return true;
} }
// read in a comma-separated set of values: very simple impl, not for // read in a comma-separated or hyphen-connected set of values: very simple
// external consumption // impl, not for external consumption
template<typename T> template<typename T>
inline bool strToList(const std::string &s, std::vector<T>& out) inline bool strToList(const std::string &s, std::vector<T>& out)
{ {
@ -68,7 +68,17 @@ inline bool strToList(const std::string &s, std::vector<T>& out)
} }
out.push_back(val); out.push_back(val);
} while (i.get(c) && c == ',');
i.get(c);
if (c == '-') {
T val_end;
i >> val_end;
while (val < val_end) {
out.push_back(++val);
}
break;
}
} while (c == ',');
return !out.empty(); return !out.empty();
} }