Определение наилучшего начального размера буфера для распаковки потоковых сжатых данных - PullRequest
2 голосов
/ 11 июня 2009

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

Точками данных являются сжатый размер и отношение к несжатому размеру. Например: 100425 (сжатый размер) x 1,3413 (степень сжатия) = 134 700 (несжатый размер)

Поток сжатых данных не сохраняет несжатый размер, поэтому декомпрессор должен выделить начальный размер буфера и перераспределить, если он переполнится. Я буду искать «лучший» начальный размер для размещения буфера с учетом сжатого размера. У меня более 293 000 точек данных.

Ответы [ 2 ]

0 голосов
/ 14 июня 2009

Один простой метод - использовать общий начальный размер буфера декомпрессии и удваивать размер в каждом realloc. Это также используется во многих динамических библиотеках.

0 голосов
/ 11 июня 2009

Учитывая, что у вас много точек данных о том, как работает ваше сжатие, я бы рекомендовал проанализировать ваши данные сжатия, чтобы получить средний стандарт сжатия и стандартное отклонение. Затем я бы порекомендовал установить исходный размер буфера в исходный размер * размер сжатия на 2 стандартных отклонения выше среднего; это будет означать, что ваш буфер имеет правильный размер для 93% ваших дел. Если вы хотите, чтобы ваш буфер больше не нуждался в перераспределении, увеличьте число стандартных отклонений выше среднего значения, на которое вы выделяете.

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