Imageloader、Glide、Fresco的性能及加载速度比较

一、使用方式:
    // 下面两个依赖包可选,根据需求二选一即可,
   compile 'com.ladingwu.library:fresco:0.0.9'
   compile 'com.ladingwu.library:glide:0.0.9'
   // 这个是必须的
compile "com.ladingwu.library:imageloader-framework:0.0.9"

二、初始化

// 初始化代码需要在Application中完成
ImageLoaderConfig config = new ImageLoaderConfig
// .Builder(LoaderEnum.FRESCO, new FrescoImageLoader())
.Builder(LoaderEnum.GLIDE,new GlideImageLocader())
// .Builder(LoaderEnum.UIL,new UilImageLoader())
.maxMemory(5 * 1024 * 1024L) // 单位为Byte
.build();
ImageLoaderManager.getInstance().init(this, config);

三、三个库的使用比较

前置条件

1、使用uisdk框架中 recycleview 加载
2、加载100个地址,地址指向的文件相同,图片大小:101kb
3、限速60kb

Imageloader:
网络下载且展示(16张图片):12.5秒
本地加载且展示(16张图片):0.8秒
帧率:54帧
快速滚动到底显示当前屏:很慢

glide:
网络下载且展示(16张图片):12.5秒
本地加载且展示(16张图片):0.7秒
帧率:52帧
快速滚动到底显示当前屏:很慢

fresco:
网络下载且展示(16张图片):12秒
本地加载且展示(16张图片):0.6秒
快速滚动帧率:56帧
快速滚动到底显示当前屏:比Imageloader、glide快三倍

结论:加载速度、帧率和内存都是fresco更胜一筹,所以建议借鉴或者使用fresco。

fresco的优势:
1、5.0以下图片加载使用Android系统匿名共享内存(Anonymous Shared Memory),可以减少堆内存溢出问题和提高性能,提高性能的原因是Android系统匿名共享内存是手动申请手动释放减少垃圾回收器的工作
2、图片加载队列管理的更加合理,不在当期屏的view则将对应的任务进行移除
3、根据不同系统版本使用不一样的解码器,提高图片解码效率
4、内存缓存策略增加未解码缓存,减少磁盘读写次数

posted @ 2019-02-21 17:13  lianghe  阅读(1245)  评论(0编辑  收藏  举报