Vamos supor que eu preciso enviar alguns dados de um computador para outro, através de uma rede muito rápida ... por exemplo, conexão padrão de 100Mbit (~ 10MB / s). As minhas unidades de disco são HDD padrão, por isso a sua velocidade está entre 30MB / se 100MB / s. Então eu acho que comprimir os dados na hora pode ajudar.
Mas ... eu não quero ser limitado pela CPU. Se eu escolher um algoritmo que seja intensivo na CPU, a transferência será realmente mais lenta do que sem compactação.
Isso é difícil com compressores como GZIP e BZIP2 porque você costuma configurar a força de compressão uma vez para toda a transferência, e meus fluxos de dados são às vezes fáceis, às vezes difíceis de compactar - isso torna o processo sub-ótimo porque às vezes eu não uso CPU completa e às vezes a largura de banda é subutilizada.
Existe um programa de compressão que se adapte à atual CPU / largura de banda e acerte o ponto ideal para que a transferência seja ideal? Idealmente para Linux, mas ainda estou curioso sobre todas as soluções. Eu adoraria ver algo compatível com os descompressores GZIP / BZIP2, mas isso não é necessário.
Então, eu gostaria de otimizar o tempo total de transferência, não apenas a quantidade de bytes para enviar.
Também não preciso de descompressão em tempo real ... a compressão em tempo real é suficiente. O host de destino pode processar os dados posteriormente em seu tempo livre. Eu sei que isso não muda muito (a compactação geralmente exige muito mais da CPU do que a descompactação), mas se houver uma solução que possa usar esse fato, melhor ainda.
Cada vez que estou transferindo dados diferentes, quero realmente fazer essas transferências únicas o mais rápido possível. Por isso, não me beneficiarei de obter várias transferências mais rapidamente devido à compactação mais forte.
Obrigado,
fonte
Respostas:
Este é um assunto atual de pesquisa - principalmente na área de redes de sensores, onde o objetivo é minimizar o uso de energia, em vez de maximizar o rendimento. O princípio da compressão adaptativa é o mesmo no entanto.
Aqui é um artigo recente de um professor na USC .
Talvez você possa tentar implementar o algoritmo dele? Tenho certeza de que haveria muitas pessoas interessadas em uma boa implementação.
fonte
Hum, essa questão já tem mais de um ano, então isso pode passar despercebido:
De qualquer forma, o Google publicou recentemente Mal-humorado isso pode ser exatamente o que você está procurando, a saber:
É implementado em C ++ com ligações disponíveis para C e uma variedade de outras linguagens.
fonte