2

皆さんに質問があります。私はスピードを求めており、この方法を頻繁に使用する必要があるため、この方法が効率的であるほど優れています。

私のコード:

private void method(final String name) {
    final URL url = new URL("http://www.somewebsite.com/blah.php?name=" + name);
    final BufferedReader in = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
    final String totalText = in.readLine();
    in.close();
    //other stuff using the totalText variable
}

この方法は機能しますが、これを機能させるためのより効率的な方法があるかどうかを尋ねています。

私が読んでいるコードに関する重要な注意事項:

  • Web サイトのソース コード全体は、わずか1行の長さです。
  • Web サイト コードを含む HTML タグはありません。それはすべて生のテキストです。
4

1 に答える 1

2

1.コードが1行の場合、質問を変更したため、次の手順を実行します... と のみInputStreamを使用しScannerます。

final URL url = new URL("http://www.somewebsite.com/blah.php?name=" + name);
InputStream i = url.openStream();
Scanner scan = new Scanner(i);
final String totalText = scan.nextLine();

2.複数の行がある場合は、毎回 String オブジェクトを作成しないようにアドバイスします。ヒープ上にオブジェクトを作成するとコストがかかるためです。

以下の 2 行により、ヒープ上に多数の String オブジェクトが作成されます。

((inputLine = in.readLine()) != null)

totalText += inputLine;

Mutable StringBuilderであるを使用し、最後にメソッドを使用して String 参照に割り当てtoString()ます。

例えば:

StringBuilder totalText;
   String ftotal;

   while ((inputLine = in.readLine()) != null) {
    totalText.append(inputLine);
}


   ftotal = totalText.toString();
于 2012-07-29T18:35:52.293 に答える