2

私は、http インターフェイスを持つデータベースに対して広範なクエリを実行するソフトウェアに取り組んでいます。したがって、私のプログラムは、長い http:// アドレスの形式のクエリを解析して処理します。

このシステム全体のボトルネックはクエリであり、大学のネットワークにギガビット接続されているにもかかわらず、データ転送が 20KB/s を超えることはほとんどありません。最近、私の友人は、私のコードを効果のない方法で書いた可能性があり、それがプロセスのスピード不足の理由かもしれないと言いました。だから私の質問は、Java で Web ソースからデータを取得する最速/最も効果的な方法は何かということです。

これが私が今持っているコードです:

private void handleQuery(String urlQuery,int qNumber, BufferedWriter out){
    BufferedReader reader;
    try{
        // IO - routines: read from the webservice and print to a log file
        reader = new BufferedReader(new InputStreamReader(openURL(urlQuery)));
        ....
        }
     }

private InputStream openURL(String urlName)
    throws IOException
 {
    URL url = new URL(urlName);
    URLConnection urlConnection = url.openConnection();
    return urlConnection.getInputStream();
 }
4

2 に答える 2

2

あなたのコードは私には良さそうです。コード スニペットは、読み込みが遅いことを説明していません。

考えられる問題は、

  1. ネットワークの問題。エンド エンド ネットワーク テストを実行して、ネットワークが思ったほど高速であることを確認します。
  2. サーバーの問題。サーバーが遅すぎるのかもしれません。
  3. スレッド競合。スレッドに問題がないか確認してください。

プロファイラーとネットワーク トレースにより、問題が特定されます。

于 2010-07-01T12:33:13.340 に答える
1

あなたが提供したコードには、ボトルネックになるものは何もありません。問題はおそらく別の場所にあります。たとえば、文字を読み取った後に文字をどう処理するか、リモート サーバーがどのように文字を書き込むか、ネットワークまたは Web プロキシの問題などです。

于 2010-07-01T12:31:52.377 に答える