现在的位置: 首页 > 架构设计 > 综合 > 正文

如何优化从闪存驱动器或者网络中加载和显示图片

2019年12月25日 架构设计, 综合 ⁄ 共 716字 ⁄ 字号 评论关闭

  我们将研究如何优化从闪存驱动器或者网络中加载和显示图片。

  

绘图性能相关紧密相关的是图像性能。

  绘图实际消耗的时间通常并不是影响性能的因素。图片消耗很大一部分内存,而且不太可能把需要显示的图片都保留在内存中,所以需要在应用运行的时候周期性地加载和卸载图片。

  图片文件加载的速度被CPU和IO(输入/输出)同时影响。iOS设备中的闪存已经比传统硬盘快很多了,但仍然比RAM慢将近200倍左右,这就需要很小心地管理加载,来避免延迟。

  只要有可能,试着在程序生命周期不易察觉的时候来加载图片,例如启动,或者在屏幕切换的过程中。按下按钮和按钮响应事件之间最大的延迟大概是200ms,这比动画每一帧切换的16ms小得多。你可以在程序首次启动的时候加载图片,但是如果20秒内无法启动程序的话,iOS检测计时器就会终止你的应用(而且如果启动大于2,3秒的话用户就会抱怨了)。

  真的需要提前加载所有东西吗?

  有些时候,提前加载所有的东西并不明智。比如说包含上千张图片的图片传送带:用户希望能够能够平滑快速翻动图片,所以就不可能提前预加载所有图片;那样会消耗太多的时间和内存。

  有时候图片也需要从远程网络连接中下载,这将会比从磁盘加载要消耗更多的时间,甚至可能由于连接问题而加载失败(在几秒钟尝试之后)。你不能够在主线程中加载网络造成等待,所以需要后台线程。

  但是对于大图来说,这样做就不太合适了,因为加载会消耗很长时间,造成滑动的不流畅。滑动动画会在主线程的runloop中更新,所以会有更多运行在渲染服务进程中CPU相关的性能问题。

  结束语:以上就是如何优化从闪存驱动器或者网络中加载和显示图片全部内容,更多内容请关注学步园。

抱歉!评论已关闭.