BufferedReader运行速度极慢

时间:2015-09-12 21:37:48

标签: java php android download bufferedreader

我正在从我的网络服务器下载图像,如下所示:

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字符。保持换行并不重要。

由于

1 个答案:

答案 0 :(得分:2)

我想这里最薄弱的环节是网络/服务器,但无论如何,你可以稍微提高 use JMS\Serializer\Annotation\Expose /** *@Expose() *@ORM\OneToOne(targetEntity="PersonalDetails", mappedBy="user", cascade= {"persist","remove"}) */ protected $personalDetails; 循环的性能。

使用while基本上会在您调用它的每个时创建一个新的+= 。所以StringBuilder与调用string1 += string2是一回事。显然,你永远不会在运行x次的循环中执行此操作。因此,在开始循环之前创建一个 string1 = new StringBuilder(string1).append(string2).toString();,并在完成后调用StringBuilder

toString()

如果循环不经常运行,性能提升可能不会那么大,但是因为你正在下载一个Image我想它运行了很多次。