summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Lutomirski <luto@kernel.org>2016-06-16 11:04:02 -0700
committerAndy Lutomirski <luto@kernel.org>2016-06-16 11:04:02 -0700
commitd1342d248f3685dba7dfd305750571a1df214ee5 (patch)
treecc9c931e92f4d18197602593d75d8a78e4cb29e1
parentd8164c2831be9bbcfcb2d6d4d89c8ab373ca530e (diff)
downloadmisc-tests-d1342d248f3685dba7dfd305750571a1df214ee5.tar.gz
timing_test: Add iter multipliers
-rw-r--r--timing_test.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/timing_test.cc b/timing_test.cc
index 0468dac..ff8062e 100644
--- a/timing_test.cc
+++ b/timing_test.cc
@@ -55,7 +55,7 @@ static void *empty_thread_proc(void *)
int main(int argc, char **argv)
{
if (argc < 3) {
- printf("Usage: time <Miters> <mode> [POSIX clock id]\n");
+ printf("Usage: time <iters> <mode> [POSIX clock id]\n");
printf("\nClocks are:\n");
describe_clock("CLOCK_REALTIME", CLOCK_REALTIME);
describe_clock("CLOCK_MONOTONIC", CLOCK_MONOTONIC);
@@ -78,7 +78,19 @@ int main(int argc, char **argv)
if (!vgetcpu)
printf("dlsym failed: %s", dlerror());
- size_t loops = (size_t)atol(argv[1]) * 1000000;
+ long loop_mult = 1;
+ char *loop_arg = strdup(argv[1]);
+ size_t loop_arg_len = strlen(loop_arg);
+ if (loop_arg_len && loop_arg[loop_arg_len-1] == 'k') {
+ loop_mult = 1000;
+ loop_arg[loop_arg_len-1] = '\0';
+ } else if (loop_arg_len && loop_arg[loop_arg_len-1] == 'M') {
+ loop_mult = 1000000;
+ loop_arg[loop_arg_len-1] = '\0';
+ }
+ size_t loops = (size_t)atol(argv[1]) * loop_mult;
+ free(loop_arg);
+
clockid_t c = argc > 3 ? atoi(argv[3]) : 0;
const char *mode = argv[2];