Hi Bernd,

On Nov 15, 2011, at 4:51 PM, Bernd Rinn wrote:

> Hi all,
> 
> I need to read an array of object references. I find the function
> H5Rget_name() quite slow. A loop like
> 
>    for (i = 0,refPR = refP; i < arrayLen; ++i,++refPR) {
> 
>        size = H5Rget_name((hid_t)loc_id, H5R_OBJECT, refPR, rName,
> rname_buf_size);
> 
>    } /* for (i = 0...) */
> 
> takes about 19 seconds on my laptop for an array of length 3456 where
> loc_id is the object id of the object reference array. On the other hand,
> 
> time h5dump Cells.AreaShape_Eccentricity.mat > /dev/null
> 
> is finished after 1.6 seconds. h5dump not only lists the names of each
> reference of the object reference array (which is what the loop above is
> supposed to do), but also each referenced dataset, each of which is a
> float array with a couple of hundred elements. Still is is more than a
> factor of 10 faster. Unfortunately the source code of h5dump is not
> straight forward to read, so I hope someone can tell me the trick used
> by h5dump to get such good performance.

        h5dump goes faster because it traverses the entire file, building a 
list of all the objects in the file.  Then each name is pulled from that table 
when displayed later.  Calling H5Rget_name individually will trigger a partial 
traversal of the file to generate the path name...

        Quincey


_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Reply via email to