2010-09-08 3 views
0

Я пытаюсь отправить много данных (в основном записи данных, преобразованные в строку) через сокет и замедляя работу остальной части моей программы. Можно ли сжимать данные с помощью gzip и т. Д. И расстегнуть их на другом конце?сжимающий сокет отправить данные

+0

Вы всегда можете обрабатывать сжатие/декомпрессию в прикладном уровне. – vrdhn

ответ

1

Да, но сжатие и декомпрессия также имеют свои издержки.

Возможно, вы захотите рассмотреть возможность использования другого процесса или потока для обработки передачи данных; это, вероятно, сложнее, чем просто сжатие, но будет лучше масштабироваться, когда ваша загрузка данных увеличивается в n раз.

+0

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

0

Конечно, вы можете это сделать. При отправке двоичных данных вы должны заботиться о endiannes платформы.

Однако вы уверены, что проблемы с производительностью будут решены путем сжатия переданных данных? У вас все еще есть дополнительные шаги (сжатие/декомпрессия, возможно, решение проблем с Endiannes).

Подумайте, как осуществляется соединение через сокеты. Используете ли вы синхронную или асинхронную связь. Если вы читаете и записываете синхронно, вы можете почувствовать нарушения производительности ...

1

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

1

Да. Самый простой способ реализовать это - использовать библиотеку venerable zlib.

Функции утилиты compress() и uncompress() могут быть такими, какие вы есть.

0

Вы можете использовать ADOC библиотеку прозрачно перегружать систему сокета вызывает

http://www.labri.fr/perso/ejeannot/adoc/adoc.html

Это делает сжатие на лету, если он считает, что это было бы выгодно.

Смежные вопросы