繁体   English   中英

BufferedReader运行极慢

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM