ファイルを小さなチャンクに分割すると、ファイル全体がダウンロードされる前に、各サーバーが受信したチャンクの転送を開始できます。これは基本的に bittorrent が使用するアルゴリズムであり、サーバーがすべてを受信した後にのみファイルを送信するよりもはるかに (つまり、漸近的に) 高速です。
実際、チャンク サイズが非常に小さい場合 (つまり、純粋に理論的なケース)、あるサイズのファイルm
をn
サーバーに配布するのにかかる時間は、 の値には依存しませんn
-- 配布されるファイルのサイズだけに依存します (すなわち O( m
))。もちろん、実際のケースでは、考慮すべきいくつかのオーバーヘッド/詳細 ( d1valがうまくまとめたもの) があり、実際には少し時間がかかります。
逆に、各サーバーがファイル全体を受信した後にのみファイルを別のサーバーにアップロードする場合、実行時間は O( m
log( n
)) になります。これは、bittorrent アプローチよりも漸近的に長くなります。
また、追加するために、通常、インタビューでこの種の質問をするとき、彼/彼女は実装の詳細ではなく、アルゴリズムについて尋ねています。