Что такое хорошая библиотека сжатия для Java? - PullRequest
5 голосов
/ 24 сентября 2008

Мне нужно сжать части сетевого трафика нашего приложения для повышения производительности. Я предполагаю, что это означает, что мне нужно держаться подальше от некоторых более новых алгоритмов, таких как bzip2, которые, как мне кажется, я слышал, работают медленнее.

Ответы [ 3 ]

11 голосов
/ 24 сентября 2008

Вы можете использовать Deflater / Inflater , который встроен в JDK. Есть также GZIPInputStream и GZIPOutputStream, но это действительно зависит от вашего точного использования.

Edit:

Читая дальнейшие комментарии, похоже, что сеть использует HTTP. В зависимости от сервера, он, вероятно, имеет поддержку сжатия (особенно с deflate / gzip). Проблема тогда становится на клиенте. Если клиент является браузером, он, вероятно, уже поддерживает его. Если ваш клиент - клиент веб-сервисов или http-клиент , проверьте документацию для этого пакета, чтобы узнать, поддерживается ли он.

Похоже, httpclient из jakarta-commons может потребовать от вас ручного сжатия. Чтобы включить это на стороне клиента, вам нужно сделать что-то вроде

.addRequestHeader("Accept-Encoding","gzip,deflate");
1 голос
/ 20 августа 2009

Ваш алгоритм сжатия зависит от того, что вы пытаетесь оптимизировать, и какой пропускной способности у вас есть.

Если вы работаете в гигабитной локальной сети, почти любой алгоритм сжатия может немного замедлить вашу программу. Если вы подключаетесь через WAN или Интернет, вы можете позволить себе немного больше сжатия. Если вы подключились к dialup, вы должны сжать настолько, насколько это возможно.

Если это WAN, вы можете найти аппаратные решения, такие как Riverbed , более эффективные, так как они работают в диапазоне трафика и не требуют каких-либо изменений программного обеспечения.

У меня есть тестовый пример, который показывает относительную разницу сжатия между Deflate, Filtered, BZip2 и lzma . Просто подключите образец ваших данных и проверьте время между двумя компьютерами.

1 голос
/ 24 сентября 2008

Если сетевой трафик идет по HTTP, большинство различных веб-серверов / контейнеров сервлетов поддерживают согласованное архивирование, например, mod_deflate для Apache.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...