Como o 'tamanho do dicionário' afeta a compactação?

39

Eu sei que um tamanho maior pode levar a uma melhor taxa de compressão e vice-versa. Mas existe uma maneira de decidir melhor? .. uma vez que existem muitas opções 7zip


Até agora, notei o tamanho do dicionário, o tamanho do arquivo produz uma compressão ideal. tamanho do arquivo
Aqui, o arquivo ∼8mb test.avitem a mesma taxa de compactação para todos os tamanhos de dicionário maiores que 8mb. Então começa a cair.

atraso
fonte
2
Sim, é porque o arquivo inteiro está na memória. No entanto, isso pode não ser possível se estiver lidando com arquivos de várias gig. O retorno do investimento diminui quanto mais alto você for. Se você precisar desse último 1%, size = tamanho do arquivo. Nota: Quando você tem um conjunto de dados muito maior, um tamanho de dicionário de 128 mb + aumentará o tempo necessário para compactar arquivos significativamente.
cybernard

Respostas:

28

Itens repetíveis são armazenados em um dicionário e um código é atribuído como um substituto.

ISSO É UMA SIMPLIFICAÇÃO EXCLUSIVA

aaaaaaaaaaaaaaaaaaaaaaaa  0001
bbbbbbbbbbbbbbbbbbbbbbbb  0002
alsdjl;asjdfkl;asdfjkljj  0003

em vez de toda a linha, basta colocar o código em seu lugar. Quanto maior o dicionário, mais códigos ele pode manipular. Normalmente, quando um dicionário fica cheio, ele inicia um novo em tempo real. Quando ele inicia um novo, ele fica em branco e novos códigos são atribuídos aos padrões detectados.

Geralmente, quanto maior, melhor a um ponto. O dicionário inteiro é mantido na memória, então você precisa de mais RAM do que o tamanho do dicionário.

O tamanho do dicionário depende da compressibilidade dos seus dados, do número de arquivos, do tamanho e do tamanho geral.

Geralmente, 32mb é mais do que suficiente, mas se você estiver compactando vários arquivos multi-gig, poderá ser usado um número muito maior. Dicionários maiores geralmente tornam o processo mais lento, mas resultam em um arquivo menor.

cybernard
fonte
2
O tamanho que você definiu como limite para o tamanho do dicionário ou o tamanho real? Os programas (7-zip em particular) normalmente determinam de forma inteligente se realmente precisam preencher o dicionário inteiro que você permitiu?
Stan
11
Sim, é um limite. Quando cheios, eles iniciam um novo dicionário ou removem dados antigos de maneira inteligente. A menos que os dados a compactar sejam maiores que o tamanho do dicionário, eles serão preenchidos.
22616 cybernard
@cybernard "será preenchido"? Para ser claro, o tamanho do dicionário permanece menor que o limite quando não é preenchido?
LonnieBest
11
@LonnieBest Sim, o dicionário começa completamente vazio. A cada tantos bits / bytes cria uma nova entrada no dicionário até ficar cheia.
cybernard 9/09