UIImage 加载图片解码性能分析

1,361 阅读1分钟

iOS UIImage 加载图片性能分析文中对3中加载图片的性能进行了分析,但在之后的研究以及查找之后发现,上篇文章的分析并不是很全面。

整个图片加载包括两个过程,第一个是图片资源的加载,在文章中比较的性能其实就是资源加载性能;第二个是图片资源解码工作。下图是图片加载方法的timer profile统计结果。

1.加载Asset图片资源


2.[UIImage imageNamed:]加载逻辑目录资源


3.[UIImage imageWithContentsOfFile:]加载逻辑目录资源


统计结果

加载图片方式加载图片资源耗时图片解码耗时
加载Asset资源5937
[UIImage imageNamed:]加载逻辑目录资源413155
[Uiimage imageWithContentsOfFile:]加载逻辑目录资源123155

比较2,3方法,发现两个在图片资源解码的耗时一致,而Asset加载资源耗时非常少,说明苹果在Asset上除了优化资源时间之外,还对资源编解码方面做了很多工作,解码性能提升至23%。

系统在加载图片资源时,image一定要到imageView.image=image时,才会被解码,而且是由系统回调在主线程执行。网络上有方法可以将解码操作放在其他线程执行,主要的原理是通过将图片画在bitContext上,然后再读取图片。