Что размер буфера должен создать архив .zip с помощью Java?

Объект ActionCongtroller :: Base # response создается Rails и содержит всю информацию HTTP-ответа, создаваемого контроллером. Это экземпляр ActionDispatch :: Response . Существуют различные методы доступа к заголовкам ответов и взаимодействия с ними. response.headers - это место, где вы хотите добавить пользовательские данные ответа.

7
задан Telcontar 14 October 2008 в 14:01
поделиться

2 ответа

Короткий ответ: Я выбрал бы что-то как 16k.


Длинный ответ:

ZIP использует ВЫКАЧИВАТЬ алгоритм для сжатия (http://en.wikipedia.org/wiki/DEFLATE). Выкачайте разновидность Ziv Lempel Welch (ищите Википедию LZW). ВЫКАЧАЙТЕ использование LZ77 и Кодирование методом Хаффмана.

Это - сжатие словаря, и насколько я знаю с точки зрения алгоритма, размер буфера, используемый при питании данных в дефлятор, не должен оказывать почти никакое влияние. Самое большое влияние для LZ77 является размером словаря и раздвижным окном, которыми не управляет размер буфера в Вашем примере.

Я думаю, что можно экспериментировать с различными буферными размерами, если Вы хотите и строите график, но я уверен, что Вы не будете видеть существенных изменений в степени сжатия (3/80000 = 0,00375%).

Самое большое влияние, которое оказывает размер буфера, находится на скорости, должной на сумму служебного кода, который выполнен, когда Вы выполняете вызовы к FileInputStream.read и zos.write. С этой точки зрения необходимо принять во внимание то, что Вы получаете и что Вы тратите.

При увеличении с 1 байта до 1 024 байтов Вы теряете 1 023 байта (в теории), и Вы получаете ~1024 сокращения служебного времени в .read и .write методах. Однако при увеличении от 1k до 64k, Вы тратите 63k который, уменьшая служебные 64 раза.

Таким образом, это идет с убывающей доходностью, таким образом я выбрал бы где-нибудь в середине (скажем, 16k) и палка с этим.

10
ответ дан 7 December 2019 в 01:28
поделиться

Зависит от аппаратных средств, которые Вы имеете (скорость диска и время поиска файла). Я сказал бы, не интересуетесь ли Вы сжатием последнего отбрасывания выбора производительности никакой размер между 4k и 64k. Так как это - недолгий объект, это будет собрано быстро так или иначе.

0
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

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