瀏覽代碼

Make file names optional for perf utility programs

jonathanvdc 8 年之前
父節點
當前提交
f118fdedab
共有 4 個文件被更改,包括 25 次插入11 次删除
  1. 2 1
      performance/perf2tex.py
  2. 7 2
      performance/perf_max.py
  3. 2 1
      performance/perf_stats.py
  4. 14 7
      performance/utils.py

+ 2 - 1
performance/perf2tex.py

@@ -212,7 +212,8 @@ def generate_color_scheme(sorted_opt_levels):
 
 def main():
     arg_parser = argparse.ArgumentParser()
-    arg_parser.add_argument('input', help='The performance data file.')
+    arg_parser.add_argument(
+        'input', help='The performance data file.', nargs='?', default=None)
     arg_parser.add_argument(
         '-q',
         '--quantity',

+ 7 - 2
performance/perf_max.py

@@ -6,9 +6,11 @@ import argparse
 from collections import defaultdict
 import utils
 
+
 def main():
     arg_parser = argparse.ArgumentParser()
-    arg_parser.add_argument('input', help='The performance data file.')
+    arg_parser.add_argument(
+        'input', help='The performance data file.', nargs='?', default=None)
     arg_parser.add_argument(
         '-q',
         '--quantity',
@@ -48,7 +50,10 @@ def main():
                 new_perf_data.append((optimization_level, new_measurements))
         perf_data = new_perf_data
 
-    print(max(max(data_point for _, data_point in measurements) for _, measurements in perf_data))
+    print(max(
+        max(data_point for _, data_point in measurements)
+        for _, measurements in perf_data))
+
 
 if __name__ == '__main__':
     main()

+ 2 - 1
performance/perf_stats.py

@@ -7,7 +7,8 @@ import utils
 
 def main():
     arg_parser = argparse.ArgumentParser()
-    arg_parser.add_argument('input', help='The performance data file.')
+    arg_parser.add_argument(
+        'input', help='The performance data file.', nargs='?', default=None)
 
     args = arg_parser.parse_args()
 

+ 14 - 7
performance/utils.py

@@ -441,20 +441,27 @@ def write_total_runtime_to_file(
         write_perf_entry_to_stream(
             test_name, optimization_level, TOTAL_TIME_QUANTITY, total_runtime, perf_file)
 
-def parse_perf_data(file_name):
-    """Parses the performance data in the given file."""
+def parse_perf_data_from_stream(input_stream):
+    """Parses performance data from the given stream."""
     results = defaultdict(lambda: defaultdict(list))
-    with open(file_name, 'r') as perf_file:
-        for line in perf_file.readlines():
-            test_name, optimization_level, quantity, result = line.strip().split(':')
-            results[quantity][optimization_level].append((test_name, float(result)))
+    for line in input_stream.readlines():
+        test_name, optimization_level, quantity, result = line.strip().split(':')
+        results[quantity][optimization_level].append((test_name, float(result)))
     return {
         quantity: sorted(result_dict.items(), key=operator.itemgetter(0))
         for quantity, result_dict in results.items()
     }
 
+def parse_perf_data(file_name):
+    """Parses the performance data in the given file."""
+    if file_name is None:
+        return parse_perf_data_from_stream(sys.stdin)
+
+    with open(file_name, 'r') as perf_file:
+        return parse_perf_data_from_stream(perf_file)
+
 def write_perf_data_to_stream(perf_data, output_stream):
-    """Writes the given performance data to the given file."""
+    """Writes the given performance data to the given stream."""
     for quantity, opt_level_dict in perf_data.items():
         for opt_level, data_points in opt_level_dict:
             for test_name, measurement in data_points: