[Pixman] [PATCH 9/9] lowlevel-blt-bench: add option to skip memcpy measurement

Pekka Paalanen ppaalanen at gmail.com
Wed Jun 10 06:32:58 PDT 2015


From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>

The memcpy speed measurement takes several seconds. When you are running
single tests in a harness that iterates dozens or hundreds of times, the
repeated measurements are redundant and take a lot of time. It is also
an open question whether the measured speed changes over long test runs
due to unidentified platform reasons (Raspberry Pi).

Add a command line option to set the reference memcpy speed, skipping
the measuring.

The speed is mainly used to compute how many iterations do run inside
the bench_*() functions, so for repeated testing on the same hardware,
it makes sense to lock that number to a constant.

Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
---
 test/lowlevel-blt-bench.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/test/lowlevel-blt-bench.c b/test/lowlevel-blt-bench.c
index 48dc1f3..bceb3dc 100644
--- a/test/lowlevel-blt-bench.c
+++ b/test/lowlevel-blt-bench.c
@@ -55,7 +55,7 @@ uint32_t *dst;
 uint32_t *src;
 uint32_t *mask;
 
-double bandwidth = 0;
+double bandwidth = 0.0;
 
 double
 bench_memcpy ()
@@ -1086,10 +1086,11 @@ print_speed_scaling (double bw)
 static void
 usage (const char *progname)
 {
-    printf ("Usage: %s [-b] [-n] [-c] pattern\n", progname);
+    printf ("Usage: %s [-b] [-n] [-c] [-m M] pattern\n", progname);
     printf ("  -n : benchmark nearest scaling\n");
     printf ("  -b : benchmark bilinear scaling\n");
     printf ("  -c : print output as CSV data\n");
+    printf ("  -m M : set reference memcpy speed to M MB/s instead of measuring it\n");
 }
 
 int
@@ -1115,6 +1116,9 @@ main (int argc, char *argv[])
 
 	    if (strchr (argv[i] + 1, 'c'))
 		use_csv_output = TRUE;
+
+	    if (strcmp (argv[i], "-m") == 0 && i + 1 < argc)
+		bandwidth = atof (argv[++i]) * 1e6;
 	}
 	else
 	{
@@ -1138,7 +1142,8 @@ main (int argc, char *argv[])
     if (!use_csv_output)
         print_explanation ();
 
-    bandwidth = bench_memcpy ();
+    if (bandwidth < 1.0)
+        bandwidth = bench_memcpy ();
     if (!use_csv_output)
         print_speed_scaling (bandwidth);
 
-- 
2.3.6



More information about the Pixman mailing list