我正在尝试使用 HttpsURLConnection
读取服务器的响应。
InputStreamReader in = new InputStreamReader((InputStream) con.getContent());
BufferedReader buff = new BufferedReader(in);
String line;
StringBuilder response=new StringBuilder();
long st=System.nanoTime();
while ((line =buff.readLine())!= null) {
response=response.append(line +"\n");
}
long et=System.nanoTime();
System.out.println("resp process time: "+((et-st))+" ns");
return response.toString();
}
目前,读取包含约 80000 个字符(1100 行)的整个响应大约需要 450 毫秒。
输出:响应处理时间:435272240 ns
是否可以进一步优化此代码以减少处理时间?
最佳答案
您创建了一个不必要的临时字符串line + "\n"
。您可以避免这种情况。
while ((line = buff.readLine()) != null) {
response.append(line).append('\n');
}
您还可以避免使用 BufferedReader(无需扫描输入中的换行符)。
InputStreamReader in = ...
char buffer[] = new char[8192];
int count;
while ((count = in.read(buffer)) != -1)
response.append(buffer, 0, count);
关于java - 优化 BufferedReader readLine() 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31501066/