/*
- * Copyright (c) 2016-2019, Intel Corporation
+ * Copyright (c) 2016-2020, Intel Corporation
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
printf(" -P Benchmark using PCRE (if supported).\n");
#endif
#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
printf(" -i DIR Don't compile, load from files in DIR"
" instead.\n");
case 'T':
if (!strToList(optarg, threadCores)) {
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);
}
break;
/*
- * Copyright (c) 2015-2019, Intel Corporation
+ * Copyright (c) 2015-2020, Intel Corporation
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
return true;
}
-// read in a comma-separated set of values: very simple impl, not for
-// external consumption
+// read in a comma-separated or hyphen-connected set of values: very simple
+// impl, not for external consumption
template<typename T>
inline bool strToList(const std::string &s, std::vector<T>& out)
{
}
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();
}