FastImageCache是Path团队开发的一个开源库,用于提升图片的加载和渲染速度,开题报告,让基于图片的列表滑动起来更顺畅。
优化点
iOS从磁盘加载一张图片,使用UIImageVIew显示在屏幕上,需要经过以下步骤:
1从磁盘拷贝数据到内核缓冲区
2从内核缓冲区复制数据到会员空间
3生成UIImageView,把图像数据赋值给UIImageView
4如果图像数据为未解码的PNG/JPG,解码为位图数据
5CATransaction捕获到UIImageView layer树的变化
6主线程Runloop提交CATransaction,开始进行图像渲染
6.1 如果数据没有字节对齐,Core Animation会再拷贝一份数据,进行字节对齐。
6.2 GPU处理位图数据,进行渲染。
FastImageCache分别优化了2,4,6.1三个步骤:
1使用mmap内存映射,省去了上述第2步数据从内核空间拷贝到会员空间的操作。
2缓存解码后的位图数据到磁盘,下次从磁盘读取时省去第4步解码的操作。
3生成字节对齐的数据,开题报告,防止上述第6.1步CoreAnimation在渲染时再拷贝一份数据。
https://github.com/path/FastImageCache