多数の小さなデータセットを HDF5 ファイルに書き込んでいます。結果のファイルサイズは、入力しているデータの単純な表から予想されるサイズの約 10 倍になります。データは次のように階層的に編成されています。
group 0
-> subgroup 0
-> dataset (dimensions: 100 x 4, datatype: float)
-> dataset (dimensions: 100, datatype: float)
-> subgroup 1
-> dataset (dimensions: 100 x 4, datatype: float)
-> dataset (dimensions: 100, datatype: float)
...
group 1
...
各サブグループは、オーバーヘッドを無視して、500 * 4 バイト = 2000 バイトを占める必要があります。データと一緒に属性を保存しません。それでも、テストでは、各サブグループが約 4 kB、つまり予想の約 2 倍を占めることがわかりました。多少のオーバーヘッドがあることは理解していますが、それはどこから来ているのでしょうか?どうすれば削減できますか? それはグループ構造を表すことにあるのでしょうか。
詳細情報: 各サブグループの 2 つのデータセットのサイズを 1000 x 4 と 1000 に増やすと、各サブグループは、私が期待するフラットな 20,000 バイトではなく、約 22,250 バイトを占有します。これは、サブグループあたり 2.2 kB のオーバーヘッドを意味し、より小さいデータセット サイズで得られた結果と一致しています。このオーバーヘッドを削減する方法はありますか?