merge-benchmark-func.py - 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) |