Какой порядок должен я использовать GzipOutputStream и BufferedOutputStream

Диаметр является возможным выбором. Это - определенно не лучший инструмент, но это функционально.

28
задан h22 1 February 2013 в 16:16
поделиться

3 ответа

Я предлагаю вам попробовать простой тест, чтобы определить время, необходимое для сжатия большого файла, и посмотреть, имеет ли это значение. У GzipOutputStream есть буферизация, но это буфер меньшего размера. Я бы сделал первый вариант с буфером 64 КБ, но вы можете обнаружить, что оба варианта лучше.

2
ответ дан 28 November 2019 в 02:47
поделиться

Прочтите javadoc, и вы обнаружите, что BIS используется для буферизации байтов, считанных из некоего исходного источника. Как только вы получите необработанные байты, вы хотите их сжать, чтобы обернуть BIS с помощью ГИС. Нет смысла буферизовать вывод GZIP, потому что нужно подумать о буферизации GZIP, кто это будет делать?

new GzipInputStream( new BufferedInputStream ( new FileInputXXX
0
ответ дан 28 November 2019 в 02:47
поделиться

Я бы не рекомендовал их использовать, так как прочитал этот комментарий:

"Самая большая проблема с классом помощники, от первого лица их использования в ваших собственных приложениях, это факт что только ОДИН помощник класса для данного class может быть в области видимости в любое время ". ... "То есть, если у вас есть два помощника по объему будет признан только ОДИН компилятором. Вы не получите ничего предупреждения или даже намеки на любые другие

Я сомневаюсь, что внешний BufferedOutputStream поможет, если вообще поможет, без явной буферизации. Почему нет? GzipOutputStream выполнит свои write () для «...» фрагментами одинакового размера независимо от того, присутствует внешняя буферизация или нет. Таким образом, оптимизация для "..." невозможна; вы застряли в том, какие размеры GzipOutputStream write () s.

Обратите внимание, что вы используете память более эффективно, буферизуя сжатые данные, а не несжатые данные. Если ваши данные часто достигают 6-кратного сжатия, «внутренний» буфер эквивалентен «внешнему» буферу в 6 раз больше.

в кусках одинакового размера вне зависимости от наличия внешней буферизации. Таким образом, оптимизация для "..." невозможна; вы застряли в том, какие размеры GzipOutputStream write () s.

Обратите внимание, что вы используете память более эффективно, буферизуя сжатые данные, а не несжатые данные. Если ваши данные часто достигают 6-кратного сжатия, «внутренний» буфер эквивалентен «внешнему» буферу в 6 раз больше.

в кусках одинакового размера вне зависимости от наличия внешней буферизации. Таким образом, оптимизация для "..." невозможна; вы застряли в том, какие размеры GzipOutputStream write () s.

Обратите внимание, что вы используете память более эффективно, буферизуя сжатые данные, а не несжатые данные. Если ваши данные часто достигают 6-кратного сжатия, «внутренний» буфер эквивалентен «внешнему» буферу в 6 раз больше.

8
ответ дан 28 November 2019 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: