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,