[英]BufferedReader running extremely slow
我正在从Web服务器下载图像,如下所示:
conn = url.openConnection();
conn.setDoOutput(true);
wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((resp = rd.readLine()) != null) {
downloadedImage += resp;
}
但是,它非常慢。 下载单个500kb文件大约需要15秒。 有没有更好的下载图像的方法?
万一重要:该文件格式为x行,每行80个UTF-8字符。 保持换行符并不重要。
谢谢
我猜这里最薄弱的环节是网络/服务器,但是无论如何,您可以稍微提高while
循环的性能。
每次调用+=
基本上都会创建一个新的StringBuilder
。 所以string1 += string2
与调用string1 = new StringBuilder(string1).append(string2).toString();
显然,您永远不会在运行x次的循环中执行此操作。 因此,请在开始循环之前创建一个 StringBuilder
,并在完成后调用toString()
。
StringBuilder stringBuilder = new StringBuilder(downloadedImage);
while ((resp = rd.readLine()) != null) {
stringBuilder.append(resp);
}
downloadedImage = stringBuilder.toString();
如果循环不经常运行,则性能提升可能不会那么大,但是由于您正在下载映像,我想它可以运行很多次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.