I'm just curious why you decided to implement a dedicated consumer instead of reusing internally eg. DiskDocValuesFormat in a similar fashion to what DirectPostingsFormat does with Lucene41PostingsFormat? Is it to avoid doing too much work upon reopen to compute things like byte widths for numerics?
Actually, it hadn't occurred to me to "wrap" like we did for DirectPF, I guess because a DVF is so much easier to write than a PF ... we could consider doing that.
But, I do think it's good to minimize work on loading values at search time... I actually started from MemoryDVF/C/P and then iterated to the "simple arrays".