2

私は、Spring MVC で開発された somthing.com と Swing Java で開発された 1 つのクライアント デスクトップ アプリケーションと言う Web サイトを持っています。みたいなサーバーURLから画像を一括ダウンロードしたい。

somthing.com/resourse/webfiles/imgs/1.jpg
somthing.com/resourse/webfiles/imgs/2.jpg
somthing.com/resourse/webfiles/imgs/3.jpg
...
somthing.com/resourse/webfiles/imgs/n.jpg

テスト目的で、いくつかの PC にクライアントをインストールし、サーバーにヒットを与えましたが、平均は 1 でした。PC あたり 1800 個の画像をダウンロードするのに 20 分かかります。

これを行うより速い方法はありますか?

現在のコード/ログイン手順は...(実際のコードを提供していないため申し訳ありません..)

  • 画像の URL をリクエストしています。
  • 出力ストリームで応答を取得しています。
  • 次に、バイトを取得してループし、物理的な場所にイメージを書き込みます。
4

1 に答える 1

0

サーバーにアクセスできる場合は、ファイルを USB サムドライブにコピーしてから、すべての PC にコピーします。これははるかに高速になる可能性があります。

実際、あなたのアプローチでは、クライアントPCとサーバーの間の帯域幅が制限であり、コードではないと思います。

潜在的に、マルチスレッドを実行すると役立つ可能性があります。しかし、ネットワーク帯域幅が限界である場合、これによってスループットが数パーセント以上向上するとは思えません。

次の計算により、改善の可能性があるかどうかを簡単に確認できます。接続帯域幅はどのくらいですか? 20 分間で転送された合計バイト数と比較するとどうなりますか? 簡単にするために、プロトコルのオーバーヘッドを処理するために、10 ビットから 1 バイトの実際の転送データを計算します。

于 2013-08-23T20:20:16.767 に答える