I've always liked B+Trees as a concept. Yes, there are some downsides as Leledumbo mentions, but even a pessimist like me believes they can be overcome.
I happen to be playing a lot with datastructures lately, since I need to rework a part with a lot of indexes soon. I'll see if I can benchmark it a bit in the weekend.
I tried to set up a generic container type, but Delphi generics suck for value types, it seems this solution is not really generic in that regard, but needs typecast to tbytes?
Another problem is that the unit name "gmap" conflicts with an unit in the FPC tree.