Как избавиться от избыточных операций в BufferedStream?
Почему системный BufferedStream часто обращается к потоку который он буферезует когда это не следует делать? Например, если я сначала прочитаю несколько первых байт а потом выполню операцию Seek, Buffered Stream перенаправит ее в лежащий в основе поток, хотя в принципе я могу следующим запросом прочитать только те данные которые уже им буферезованы, или если потребуется больше данных чем уже имеется в буфере, BufferedStream все равно будет вынужден двигать курсор на размер данных буфера, так что первая смена позиции при любом раскладе избыточная.
В общем, я так понял стандартная реализация очень примитивна и заточена под простой сценарий одного прохода по большому файлу, может есть более продвинутые реализации, которые бы исходили из того что все операции с исходным потоком очень дорогие и их следует выполнять только при необходимости?