BufferedReader 运行 极慢
BufferedReader running extremely slow
我正在从我的网络服务器下载图像,如下所示:
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 字符。保留换行符并不重要。
谢谢
我想最弱的 link 是网络/服务器,但无论如何,您可以稍微提高 while
循环的性能。
使用 +=
基本上会在每次调用它时创建一个新的 StringBuilder
。所以 string1 += string2
与调用 string1 = new StringBuilder(string1).append(string2).toString();
是一回事 显然,您永远不会在 运行ns x 次的循环中执行此操作。因此,在开始循环之前创建 one StringBuilder
,并在完成后调用 toString()
。
StringBuilder stringBuilder = new StringBuilder(downloadedImage);
while ((resp = rd.readLine()) != null) {
stringBuilder.append(resp);
}
downloadedImage = stringBuilder.toString();
如果循环不 运行 频繁,性能改进可能不会那么大,但由于您正在下载图像,我想它 运行 很多次。
我正在从我的网络服务器下载图像,如下所示:
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 字符。保留换行符并不重要。
谢谢
我想最弱的 link 是网络/服务器,但无论如何,您可以稍微提高 while
循环的性能。
使用 +=
基本上会在每次调用它时创建一个新的 StringBuilder
。所以 string1 += string2
与调用 string1 = new StringBuilder(string1).append(string2).toString();
是一回事 显然,您永远不会在 运行ns x 次的循环中执行此操作。因此,在开始循环之前创建 one StringBuilder
,并在完成后调用 toString()
。
StringBuilder stringBuilder = new StringBuilder(downloadedImage);
while ((resp = rd.readLine()) != null) {
stringBuilder.append(resp);
}
downloadedImage = stringBuilder.toString();
如果循环不 运行 频繁,性能改进可能不会那么大,但由于您正在下载图像,我想它 运行 很多次。