我正在从我的网络服务器下载图像,如下所示:
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字符。保持换行并不重要。
由于
答案 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我想它运行了很多次。