merge-benchmark-func.py - libzahl - big integer library
 (HTM) git clone git://git.suckless.org/libzahl
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       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)