What’s the HDFGroup’s proposed path forward?
I see two approaches:
- Try to fix the performance bug in
H5S__hyper_merge_spans_helperto ensure that it has the right algorithmic complexity when the trees are very unbalanced. I’d expect that by using bisection it should be possible to merge two selections of sizeNandMin timemax(log(max(N, M)), min(N, M)). Meaning if one tree has sizeNand we insert a single slab, i.e. the case for (some)H5Sselect_hyperslabit runs in log-time, while merging two balanced trees runs in time proportional to the total number of elements. - Expect users to not use
H5Sselect_hyperslabwhen merging hyperslabs in bulk and instead expect them to useH5Scombine_select, e.g. in a manner similar to the workaround sketched above. This could be achieved by documenting the complexity ofH5Sselect_hyperslabandH5Scombine_selectclearly and referring toH5Scombine_selectfromH5Sselect_hyperslab. If so it would be very helpful ifH5Scombine_selectcould be polished to allow combiningNONEandALLselections (see separate topic).
