merge-benchmark-func.py (1500B)
1 #!/usr/bin/env python3 2 # See LICENSE file for copyright and license details. 3 4 5 # Invoke using `env SELECT_MIN=` to select the minimum value, 6 # rather than concatenate. This applies to 1-dimensional data only. 7 8 9 import sys, os 10 11 line_count = None 12 files = [] 13 14 for path in sys.argv[1:]: 15 with open(path, 'rb') as file: 16 data = file.read() 17 data = data.decode('utf-8', 'strict') 18 if data[-1] == '\n': 19 data = data[:-1] 20 data = data.split('\n') 21 if line_count is None: 22 line_count = len(data) 23 elif len(data) != line_count: 24 print('%s: line count mismatch' % sys.argv[0], file = sys.stderr) 25 sys.exit(1) 26 files.append(data) 27 28 dim = int(files[0][1]) 29 skip = 1 + dim 30 for i in range(skip): 31 print(files[0][i]) 32 33 if dim > 1: 34 for i in range(skip, line_count): 35 best_nsec = None 36 best_line = None 37 for lines in files: 38 line = lines[i] 39 nsec = int(line) 40 if best_nsec is None or nsec < best_nsec: 41 best_nsec, best_line = nsec, line 42 print(best_line) 43 elif 'SELECT_MIN' not in os.environ: 44 for lines in files: 45 for i in range(skip, line_count): 46 print(lines[i]) 47 else: 48 best_nsec = None 49 best_line = None 50 for lines in files: 51 for i in range(skip, line_count): 52 line = lines[i] 53 nsec = int(line) 54 if best_nsec is None or nsec < best_nsec: 55 best_nsec, best_line = nsec, line 56 print(best_line)