Browse Source

Make perf2tex results embeddable

jonathanvdc 8 years ago
parent
commit
0f3dd027af
1 changed files with 24 additions and 10 deletions
  1. 24 10
      performance/perf2tex.py

+ 24 - 10
performance/perf2tex.py

@@ -36,14 +36,19 @@ def encode_latex_string(value):
     return '{%s}' % value.replace('_', '\\_')
 
 
-def assemble_latex_chart(optimization_levels, color_defs, test_names, data):
+def assemble_latex_chart(optimization_levels,
+                         color_defs,
+                         test_names,
+                         data,
+                         embed=False):
     """Assembles a LaTeX chart from the given components."""
     lines = []
-    lines.append(LATEX_HEADER)
-    for color_name, (red, green, blue) in color_defs:
-        lines.append(r'\definecolor{%s}{HTML}{%02X%02X%02X}' %
-                     (color_name, red, green, blue))
-    lines.append(LATEX_DOCUMENT_HEADER)
+    if not embed:
+        lines.append(LATEX_HEADER)
+        for color_name, (red, green, blue) in color_defs:
+            lines.append(r'\definecolor{%s}{HTML}{%02X%02X%02X}' %
+                         (color_name, red, green, blue))
+        lines.append(LATEX_DOCUMENT_HEADER)
     lines.append(r"""
     \begin{axis}[
         width = 0.85*\textwidth,
@@ -77,11 +82,12 @@ def assemble_latex_chart(optimization_levels, color_defs, test_names, data):
                  ','.join(map(encode_latex_string, optimization_levels)))
     lines.append(r"""
     \end{axis}""")
-    lines.append(LATEX_DOCUMENT_FOOTER)
+    if not embed:
+        lines.append(LATEX_DOCUMENT_FOOTER)
     return '\n'.join(lines)
 
 
-def create_latex_chart(perf_data, sorted_opt_levels=None):
+def create_latex_chart(perf_data, sorted_opt_levels=None, embed=False):
     """Creates a LaTeX chart for the given performance data."""
     if sorted_opt_levels is None:
         sorted_opt_levels = sort_by_runtime(perf_data)
@@ -102,7 +108,8 @@ def create_latex_chart(perf_data, sorted_opt_levels=None):
             if name not in test_names:
                 test_names.append(name)
 
-    return assemble_latex_chart(opt_levels, color_defs, test_names, data)
+    return assemble_latex_chart(opt_levels, color_defs, test_names, data,
+                                embed)
 
 
 def get_mean_runtimes(perf_data):
@@ -228,6 +235,13 @@ def main():
         const=True,
         help="Produce bars that are relative to some baseline.",
         default=False)
+    arg_parser.add_argument(
+        '-e',
+        '--embed',
+        action='store_const',
+        const=True,
+        help="Don't include a LaTeX document header and footer.",
+        default=False)
 
     args = arg_parser.parse_args()
 
@@ -261,7 +275,7 @@ def main():
         perf_data_dict = get_relative_measurements(perf_data_dict,
                                                    baseline_opt_level)
 
-    print(create_latex_chart(perf_data_dict, sorted_opt_levels))
+    print(create_latex_chart(perf_data_dict, sorted_opt_levels, args.embed))
 
 
 if __name__ == '__main__':