Чтение структурированного двоичного файла с помощью numpy: fromfile vs. read & frombuffer - PullRequest
0 голосов
/ 04 сентября 2018

Я читаю двоичный файл, используя numpy, и задаюсь вопросом, следует ли мне использовать повторные вызовы к numpy.fromfile или читаю из файла вручную и вызываю numpy.frombuffer:

# Alternative 1: fromfile
with open(path, 'rb') as f:
    num = numpy.fromfile(f, 'u4', 1)[0]
    l = numpy.fromfile(f, 'u4', num)
    o = numpy.fromfile(f, 'u4', num)
    m = numpy.fromfile(f, 'f4', num)
    c = numpy.fromfile(f, '3f4', num)
    s = numpy.fromfile(f, '3u4', num)

# Alternative 2: read & frombuffer
def fread(f, fmt):
    dtype = numpy.dtype(fmt)
    return numpy.frombuffer(f.read(dtype.itemsize), dtype)[0]
with open(path, 'rb') as f:
    num = fread(f, 'u4')
    l = fread(f, f'({num},)u4')
    o = fread(f, f'({num},)u4')
    m = fread(f, f'({num},)f4')
    c = fread(f, f'({num},3)f4')
    s = fread(f, f'({num},3)u4')

Есть ли разница (производительность или нет) между этими двумя методами?

...