2012-09-27 109 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。

相關問題