iOS UIImage 加载图片性能分析

2,574 阅读1分钟

加载图片的三种方式:

1.图片在Asset里面,带缓存

UIImage *image = [UIImage imageNamed:imageName];

2.图片在逻辑目录里面,带缓存

UIImage *image = [UIImage imageNamed:imageName];

3.图片在逻辑目录里面,不带缓存

UIImage *image = [UIImage imageWithContentsOfFile:path];

性能分析

主要比较第一次加载图片的性能。测试案例加载了50张150*150的图片,测试机型:iphone5,系统iOS 10.3.3,测试工具,time Profiler。


比较测试结果:




其中,

1.图片在Asset里面,带缓存,总耗时:52ms

UIImage *image = [UIImage imageNamed:imageName];

2.图片在逻辑目录里面,带缓存,总耗时:477ms

UIImage *image = [UIImage imageNamed:imageName];

3.图片在逻辑目录里面,不带缓存,总耗时:99ms

UIImage *image = [UIImage imageWithContentsOfFile:path];

从上面的结果可以看出,使用Asset加载图片的性能最高,并且带有缓存功能。

使用imageNamed加载逻辑目录资源效率太低,但是项目中很难避免开发人员误用,如何找到误用imageNamed加载逻辑目录图片可以参考iOS UIImage 找到性能的拖油瓶

补充

UIImage 加载图片解码性能分析