2012-09-27 108 views
1

从hdf文件读取属性时出现性能问题..从大约18000个组/数据集中读取属性(每个10个)需要将近1.5分钟..希望有人可以告诉我是否这对于这样的结构确实是一个合理的时间... hdf文件在根下有大约300个组 这300个组(T)中的每一个都有大约60个子组(V),并且这60个子组中的每一个都有1或2个数据集(d)性能读取嵌套层次结构

Root 

     ----- T1 

      ----- V1 
       ---- D 

      ----- V60 
        ---- D 

     .... 
     .... 
     .... 

     ----- T300 

在每个级别我读书最多10个微小的属性..

做阅读每个组的意思大多是一个新的磁盘寻找?我最初的想法是,由于元数据属于不同groups..they可能最终会在不同的磁盘块 我想创建所有metatadata

VTUNE的数据集的显示大的等待时间打开组和数据集 ..any提高性能的建议..?

回答

1

每个对象(组或数据集)的元数据通常存储在对象头中,因此,正如您所说,它可能位于不同的磁盘块中。但是,正如您发现的那样,如果您需要阅读大量属性,可能会导致性能较差。您对于创建所有属性的数据集的想法实际上是在HDF5中实现的。这被称为“密集属性存储”,可以使用H5Pset_attr_phase_change开启。有一些示例代码here

您需要在每个组和数据集上使用此功能。从参考手册中不清楚它是否为所有具有密集属性存储的对象创建了一个数据集,或者为它们中的每一个创建了一个。可能这取决于文件驱动程序。最后,如果密集的属性存储不能提供很大的加速,那么可以考虑并行IO。

相关问题