2012-02-10 129 views
1

如果我有一个64位整数的32^3数组,但它只包含十几个不同的值,您能告诉HDF5使用“内部映射”来节省内存和/或磁盘空间吗?我的意思是数组通常会以64位整数访问,但是每个值都会在内部作为一个字节(?)索引存储在一个64位整数表中,可能会节省大约7/8的内存和/或磁盘空间。如果这是可能的,它实际上是节省内存,磁盘空间还是两者兼而有之?HDF5可以执行“值映射”吗?

回答

1

我不认为HDF5提供了开箱即用的功能,但没有理由不能实现例程来将数据写入HDF5文件并以您的方式重新读取似乎想要。我想你可以将你的查找表和你的数组写入不同的数据集。

这是可能的,但不是我有任何证据表明,HDF的压缩设施将充分压缩整型数据集,您可以节省一定量的空间。

然后,对于我使用的HDF5文件(10 GB),我不打算尝试设计自己的编码方案来节省如此适量的空间,因为32768元素的64位数组可能会能够免除。当然,您可以将2097152位的数据集转换为131072中的一个,但是磁盘空间(即使是RAM)现在还没那么严密。

我开始形成,你要使用HDF5的印象,或许,智能手机:-)

+0

嗯,这是没有那么多的磁盘空间本身的事宜中,而是RAM和“带宽”在客户端和服务器之间。如果文件在服务器上被压缩,那么它会节省带宽,但不能访问压缩的数据而不先解压缩,这样不会节省RAM。表映射可以节省RAM和带宽,但是我认为手动执行映射似乎并不困难。 – 2012-02-10 16:15:12