В DotNetZip есть DeflateStream, фактически заменяющий встроенный DeflateStream в .NET BCL. Ionic.Zlib.DeflateStream имеет настраиваемый размер буфера. Я не знаю, приведет ли это к повышению эффективности памяти в вашем сценарии, но, возможно, стоит попробовать. Вот документ .
Я не тестировал декомпрессию, а скорее сжатие. В моих тестах я обнаружил ограниченную отдачу от расширения размера буфера за пределы 4 КБ для подмножества сжатых данных. С другой стороны, вы все равно получаете точное и правильное сжатие, хотя оно менее эффективно, даже если размер буфера составляет 1024 байта. Я полагаю, вы увидите похожие результаты в декомпрессии.
В любом случае размер окна не может быть установлен напрямую из открытого интерфейса. Но это с открытым исходным кодом, и вы сможете легко изменить размер Wwindow по умолчанию в зависимости от ситуации. Кроме того, если вы считаете, что это ценно, я мог бы запросить размер окна в качестве устанавливаемого параметра в DeflateStream. Я не обнародовал это, потому что никто не просил об этом. Тем не менее
Вы сказали, что у вас тоже было другое сжатие. Если вы используете Zlib или GZip, в пакете DotNetZip также есть ZlibStream и GZipStream.
Если вы хотите создавать Zip-файлы, вам нужна полная библиотека DotNetZip (Ionic.Zip.dll, ~ 400k). Если вы просто делаете {Deflate, Zlib, GZip} Stream, то есть Ionic.Zlib.dll, который составляет около 90 КБ.
DotNetZip бесплатен, но пожертвования приветствуются .