40 votes

Entrée de lectureLe flux utilisantBufferedReader.readLine () est trop lent

J'utilise le code suivant.

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;

StringBuilder responseData = new StringBuilder();
while((line = in.readLine()) != null) {
    responseData.append(line);
}

Mais il faut plus de 12 secondes pour lire 200 lignes.

S'il vous plaît aider

30voto

Jon Skeet Points 692016

Je soupçonne fortement que c'est à cause de la connexion réseau ou du serveur Web auquel vous parlez - ce n'est pas la faute de BufferedReader. Essayez de mesurer ceci :

InputStream stream = conn.getInputStream();
byte[] buffer = new byte[1000];
// Start timing
while (stream.read(buffer) > 0)
{
}
// End timing

Je pense que vous trouverez que c'est presque exactement le même moment que lorsque vous analysez le texte.

Notez que vous devez également donner InputStreamReader un encodage approprié - l'encodage par défaut de la plate-forme n'est presque certainement pas ce que vous devriez utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X