Я сделал то, что предложил Арно Сетагая в своем ответе: сделал несколько выборочных тестов и сравнил результаты.
Тесты сжатия были выполнены с использованием 5 файлов, каждый из которых по 4096 байт. Каждый байт внутри этих 5 файлов был сгенерирован случайным образом.
ВАЖНО: В реальной жизни данные, скорее всего, не будут случайными, но, как правило, будут содержать немного повторяющихся байтов. Таким образом, в реальных приложениях сжатие будет иметь тенденцию быть немного лучше, чем следующие результаты.
ПРИМЕЧАНИЕ. Каждый из 5 файлов был сжат сам по себе (то есть не вместе с другими 4 файлами, что привело бы к лучшему сжатию). В следующих результатах я просто использую сумму 5 файлов вместе для простоты.
Я включил RAR только для сравнения, хотя он не с открытым исходным кодом.
Результаты: (от лучшего к худшему)
LZOP: 20775/20480 * 100 = 101,44% от исходного размера
RAR: 20825/20480 * 100 = 101,68% от исходного размера
LZMA: 20827/20480 * 100 = 101,69% от исходного размера
ZIP: 21020/20480 * 100 = 102,64% от исходного размера
BZIP: 22899/20480 * 100 = 111,81% от исходного размера
Вывод: К моему удивлению, ВСЕ протестированные алгоритмы имели больший размер, чем оригиналы !!! Я предполагаю, что они хороши только для сжатия больших файлов или файлов, которые имеют много повторяющихся байтов (не случайные данные, как указано выше). Таким образом, я не буду использовать какой-либо тип сжатия для моих пакетов TCP. Возможно, эта информация будет полезна для других, которые рассматривают сжатие небольших фрагментов данных.
EDIT:
Я забыл упомянуть, что я использовал параметры (флаги) по умолчанию для каждого из алгоритмов.