aboutsummaryrefslogtreecommitdiffstats
path: root/bench/merge-benchmark-func.py
blob: c1b66eb1afe51751c8fde8cb68e346b4258cd226 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env python3
# See LICENSE file for copyright and license details.


# Invoke using `env SELECT_MIN=` to select the minimum value,
# rather than concatenate. This applies to 1-dimensional data only.


import sys, os

line_count = None
files = []

for path in sys.argv[1:]:
    with open(path, 'rb') as file:
        data = file.read()
    data = data.decode('utf-8', 'strict')
    if data[-1] == '\n':
        data = data[:-1]
    data = data.split('\n')
    if line_count is None:
        line_count = len(data)
    elif len(data) != line_count:
        print('%s: line count mismatch' % sys.argv[0], file = sys.stderr)
        sys.exit(1)
    files.append(data)

dim = int(files[0][1])
skip = 1 + dim
for i in range(skip):
    print(files[0][i])

if dim > 1:
    for i in range(skip, line_count):
        best_nsec = None
        best_line = None
        for lines in files:
            line = lines[i]
            nsec = int(line)
            if best_nsec is None or nsec < best_nsec:
                best_nsec, best_line = nsec, line
        print(best_line)
else 'SELECT_MIN' not in os.environ:
    for lines in files:
        for i in range(skip, line_count):
            print(lines[i])
else:
    best_nsec = None
    best_line = None
    for lines in files:
        for i in range(skip, line_count):
            line = lines[i]
            nsec = int(line)
            if best_nsec is None or nsec < best_nsec:
                best_nsec, best_line = nsec, line
    print(best_line)