Я хотел бы задать вопрос о производительности сжатия, которая связана с размером блока файлов hdf5.
У меня есть 2 файла hdf5 со следующими свойствами. Оба они содержат только один набор данных, называемый «данными».
"Данные" файла А:
- Тип: Скалярный набор данных HDF5
- Количество размеров: 2
- Размер: 5094125 x 6.
- Максимум. размерный размер: Неограниченный x Неограниченный
- Тип данных: 64-битная с плавающей запятой
- Разделение на части: 10000 x 6
- Сжатие: уровень GZIP = 7
"Данные" файла B:
- Тип: Скалярный набор данных HDF5
- Количество размеров: 2
- Размер: 6720 x 1000.
- Максимум. размерный размер: Неограниченный x Неограниченный
- Тип данных: 64-битная с плавающей запятой
- Разделение на части: 6000 x 1
- Сжатие: уровень GZIP = 7
Размер файла A: HDF5 ---- 19 МБ CSV ----- 165 МБ
Размер файла B: HDF5 ---- 60 МБ CSV ----- 165 МБ
Оба они показывают отличное сжатие хранимых данных по сравнению с файлами csv. Однако степень сжатия файла A составляет около 10% от исходного csv, в то время как степень сжатия файла B составляет лишь около 30% от исходного csv.
Я пробовал использовать другой размер блока, чтобы сделать файл B как можно меньше, но мне кажется, что 30% - это оптимальная степень сжатия. Я хотел бы спросить, почему файл A может достичь большего сжатия, а файл B - нет.
Если файл B тоже может достичь, каков должен быть размер блока?
Это какое-то правило для определения оптимального размера фрагмента HDF5 для сжатия?
Спасибо!