かなり高速なネットワークを介して、あるコンピュータから別のコンピュータにデータを送信する必要があるとしましょう...たとえば、標準の100Mbit接続(〜10MB / s)。私のディスクドライブは標準HDDなので、速度は30MB / sから100MB / sの間です。そのため、その場でデータを圧縮することが役立つと思います。
しかし... CPUに制限されたくありません。CPUを集中的に使用するアルゴリズムを選択した場合、転送は実際には圧縮なしよりも遅くなります。
これは、GZIPやBZIP2などのコンプレッサーでは困難です。これは、通常、転送全体に対して一度圧縮強度を設定するためです。また、データストリームが時々簡単で、時々圧縮が難しいため、完全なCPUを使用しない場合があるため、プロセスが最適ではなくなります。また、帯域幅が十分に活用されていない場合もあります。
転送が最適になるように、現在のCPU /帯域幅に適応してスイートスポットに到達する圧縮プログラムはありますか?Linuxに理想的ですが、私はすべてのソリューションにまだ興味があります。GZIP / BZIP2デコンプレッサと互換性のあるものが見たいのですが、これは必須ではありません。
したがって、送信するバイト数だけでなく、総転送時間を最適化したいと思います。
また、リアルタイムの解凍は必要ありません...リアルタイムの圧縮で十分です。宛先ホストは、その空き時間に後でデータを処理できます。私はこれがあまり変化しないことを知っていますが(圧縮は通常、解凍よりもCPUに負荷がかかります)、この事実を使用できる解決策があれば、なお良いでしょう。
異なるデータを転送するたびに、これらの1回限りの転送を可能な限り迅速に実行したいのです。そのため、圧縮率が高いため、複数の転送を高速化するメリットはありません。
おかげで、