libzahl

big integer library
git clone git://git.suckless.org/libzahl
Log | Files | Refs | README | 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)