benchtests: send non-consumable data to stderr
authorLeonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Mon, 10 Dec 2018 21:20:23 +0000 (15:20 -0600)
committerLeonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Wed, 12 Dec 2018 17:05:22 +0000 (11:05 -0600)
Non-consumable data, alias data not related to benchmarks, should be sent to
the standard error, thus pipelines can work as expected.

* benchtests/scripts/compare_bench.py (do_compare): write to stderr in case
    stat is not present.
* benchtests/scripts/compare_bench.py (plot_graphs): write to stderr in case
    timings field is not present. Also string showing the output filename goes
    into the stderr.

ChangeLog
benchtests/scripts/compare_bench.py

index 953a047..1b0fff4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2018-12-12  Leonardo Sandoval  <leonardo.sandoval.gonzalez@intel.com>
 
+       * benchtests/scripts/compare_bench.py (do_compare): write to
+       stderr in casestat is not present.
+       * benchtests/scripts/compare_bench.py (plot_graphs): write to
+       stderr in case timings field is not present. Also string showing
+       the output filename goes into the stderr.
+
+2018-12-12  Leonardo Sandoval  <leonardo.sandoval.gonzalez@intel.com>
+
        * benchtests/scripts/compare_bench.py (do_compare): Catch KeyError
        and ZeroDivisorError exceptions.
        * benchtests/scripts/compare_bench.py (compare_runs): Use stats
index f0c9bf7..eaddc57 100755 (executable)
@@ -47,6 +47,7 @@ def do_compare(func, var, tl1, tl2, par, threshold):
         v2 = tl2[str(par)]
         d = abs(v2 - v1) * 100 / v1
     except KeyError:
+        sys.stderr.write('%s(%s)[%s]: stat does not exist\n' % (func, var, par))
         return
     except ZeroDivisionError:
         return
@@ -85,7 +86,7 @@ def compare_runs(pts1, pts2, threshold, stats):
             # timing info for the function variant.
             if 'timings' not in pts1['functions'][func][var].keys() or \
                 'timings' not in pts2['functions'][func][var].keys():
-                    continue
+                continue
 
             # If two lists do not have the same length then it is likely that
             # the performance characteristics of the function have changed.
@@ -133,7 +134,7 @@ def plot_graphs(bench1, bench2):
             # No point trying to print a graph if there are no detailed
             # timings.
             if u'timings' not in bench1['functions'][func][var].keys():
-                print('Skipping graph for %s(%s)' % (func, var))
+                sys.stderr.write('Skipping graph for %s(%s)\n' % (func, var))
                 continue
 
             pylab.clf()
@@ -157,7 +158,7 @@ def plot_graphs(bench1, bench2):
                 filename = "%s-%s.png" % (func, var)
             else:
                 filename = "%s.png" % func
-            print('Writing out %s' % filename)
+            sys.stderr.write('Writing out %s' % filename)
             pylab.savefig(filename)
 
 def main(bench1, bench2, schema, threshold, stats):