Какой алгоритм сжатия лучше подходит для сжатия выходных данных буферов протокола? - PullRequest
2 голосов
/ 01 февраля 2012

Дано:

  • таблица БД только с числовой статистикой
  • двоичный дамп таблицы - запись после записи
  • протокол буферизации дамп таблицы - использованиеПрото-схема, созданная из схемы таблицы

Как я и ожидал, двоичный дамп, создаваемый буферами протокола, меньше, чем простой двоичный дамп той же таблицы:

PS Z:\dev\internal\vedtool> dir net_endshapes_stat.data | % { "$($_.Name): $($_.Length)B" }
net_endshapes_stat.data: 2941331B
net_endshapes_stat.data: 4311042B

ОднакоКогда я сжал оба файла с помощью 7z, используя Ultra level и метод LZMA, я обнаружил, что файл большего размера сжимается лучше:

PS Z:\dev\internal\vedtool> dir net_endshapes_stat.7z | % { "$($_.Name): $($_.Length)B" }
net_endshapes_stat.7z: 1206186B
net_endshapes_stat.7z: 1055901B

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

EDIT

Вот схема протокола:

message net_endshapes_stat {
  optional fixed32 timestamp = 1;
  optional sint32 shape_id = 2;
  optional sint64 bps_in = 3;
  optional sint64 bps_out = 4;
  optional sint64 total_in = 5;
  optional sint64 total_out = 6;
}
...