zoukankan      html  css  js  c++  java
  • 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、内存缓存策略增加未解码缓存,减少磁盘读写次数

  • 相关阅读:
    B树,B+树比较
    Kafka、RabbitMQ、RocketMQ 全方位对比
    ElasticSearch 笔记
    AtomicReference实现单例模式
    Netty 核心组件笔记
    Netty Reactor 线程模型笔记
    urldecode和urlencode相互转换
    python字符格式问题SyntaxError: Non-UTF-8 code starting with 'xe4'
    百度文字识别获取access token
    Python中MD5加密
  • 原文地址:https://www.cnblogs.com/lianghe01/p/10413882.html
Copyright © 2011-2022 走看看