Почему hdf5 набор данных не влияет на производительность - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь сравнить влияние на производительность правильного разбиения набора данных hdf5. Ниже приведен результат без чанкинга (в Jupyter Notebook). Загрузка 1000x1000 данных примерно в 20 раз медленнее, чем 100x100.

import h5py
f = h5py.File('datasets_test.h5', 'w')
dset = f.create_dataset('default', (50000, 10000))
%timeit dset[20000:21000, 5000:6000]
%timeit dset[20000:20100, 5000:5100]

1,88 мс ± 6,94 мкс на л oop (среднее ± стандартное отклонение из 7 прогонов) , 1000 циклов каждый)

82,8 мкс ± 773 нс на л oop (среднее ± стандартное отклонение от 7 прогонов, 10000 циклов каждый)

Я думал если бы я поместил один и тот же набор данных в порции, каждый из которых был 1000x1000, я бы увидел, что загрузка 1000x1000 будет на меньше, чем 20x медленнее, потому что операция загрузки 100x100 будет загружать дополнительные данные из-за свойство атома c кусков. Но приведенные ниже результаты теста не подтверждают это:

dset_chunked = f.create_dataset('chunked', (50000, 10000), chunks=(1000, 1000))
%timeit dset[20000:21000, 5000:6000]
%timeit dset[20000:20100, 5000:5100]

1,88 мс ± 12,7 мкс на л oop (среднее ± стандартное отклонение из 7 прогонов, 1000 циклов в каждом )

81,1 мкс ± 794 нс на л oop (среднее ± стандартное отклонение из 7 прогонов, по 10000 циклов каждый)

Не могли бы вы подсказать, где я неправильно?

...