The implementation is HyperDescriptorreally specific for compile-time properties, as it uses ILGenerator, etc. and caches the generated code. If you use ICustomDescriptor, you are already in a very different performance profile, for example, if your user PropertyDescriptorworks with a dictionary or hash table as a bag with characteristics, it can be much faster than the initial reflection.
It may be possible for further optimization, but I will need to learn more about the specific implementation. But that would be a non-trivial job, so first make sure that this member access is actually a bottleneck and that you could not do something as simple as paging or "virtual mode" in the first place.
(: HyperDescriptor, )