ORMLite和GreenDao数据库框架的对比

一、前言:

Android 中常用的数据库框架,下面先列出几个ORM框架:ORMLitegreendaoormndroidandrormActiveAndroid

二、对比:

1. ormlite

基于注解和反射的的方式,导致ormlite性能有着一定的损失(注解其实也是利用了反射的原理)
优点:
文档较全面,社区活跃,有好的维护,使用简单,易上手。
缺点:
基于反射,效率较低

2. GreenDao

官网中明确指明了其首要设计目标:

  • Maximum performance (probably the fastest ORM for Android):系能最大化
  • Easy to use APIs:便于使用
  • Highly optimized for Android:对于Android高度优化
  • Minimal memory consumption:最小化内存开销
  • Small library size, focus on the essentials:较小的文件体积,只集中在必要的部分上。

优点:

  • 效率很高,插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4.5倍。
    官网测试结果:http://greendao-orm.com/features/
  • 文件较小(<100K),占用更少的内存 ,但是需要create Dao,
  • 操作实体灵活:支持get,update,delete等操作

缺点:

  • 学习成本较高。其中使用了一个java工程根据一些属性和规则去generate一些基础代码,类似于javaBean但会有一些规则,另外还有QueryBuilder、Dao等API,所以首先要明白整个过程,才能方便使用。没有ORMLite那样封装的完整,不过greenDao的官网上也提到了这一点,正是基于generator而不是反射,才使得其效率高的多。

三、性能分析

1、Android中数据库的使用

Sqlite的使用:http://www.jianshu.com/p/8e3f294e2828
GreenDao的使用:https://mp.weixin.qq.com/s/4Nx2DacsK65O5LanPZUszA
Realm的使用:http://www.jianshu.com/p/28912c2f31db#

2、数据库的性能对比

数据库使用的版本

这边贴的都是project里面的版本
greenDao:org.greenrobot:greendao-gradle-plugin:3.2.2
realm:io.realm:realm-gradle-plugin:3.1.1

性能对比

这边通过对数据库分别插入10条,100条,1000条,10000条数据来查看各自数据库的速度。(其中使用的手机是华为的P8)
因为每次数据库操作的时间都不大一样,有时候差别还挺大,因此只能反映一个大概的情况。

插入时间(ms)SQliteGreenDaoRealm
10条18168
100条756537
1000条392419132
10000条23652992874

删除操作的话,是通过查询得到相应的数据后,再对找到的数据进行批量的删除得到的时间。而不是笼统的直接deleteAll。

删除时间(ms)SQliteGreenDaoRealm
10条12164
100条8294
1000条122618
10000条69232756

更新操作的话,也是同样先找到相应的数据,在对找到的数据进行更新。

更新时间(ms)SQliteGreenDaoRealm
10条8124
100条104112
1000条2031896
10000条803179578

从上面的数据上,

  • 可以看出Realm库在进行插入、更新、删除等操作都具有较快的速度(尤其是在插入数据的速度上),底层由JNI实现是比较关键的因素。
  • 而Android中原生的SQlite数据库在插入数据的表现上跟greenDao差不多,但是删除和更新操作速度最快。
  • 至于greenDao速度上来讲可能表现的最差(不知道是不是代码实现的问题)。
  • 最后对于包大小上来讲,Sqlite相对于realm的话要小得多,并且生成的数据库也要小得多。

下面这张图是插入同样多的数据后,以上三个数据库的大小。

image.png

其中greenDao和sqlite生成的数据库大小差不多,但是realm的数据库却要大好多,如果对包的大小非常敏感的大话,需要考虑一下。
最后,附上做测试的代码的demo:https://github.com/mj845307413/DatabaseTest


原文链接:https://blog.csdn.net/xushuaic/article/details/24434881
作者:南通小窝头
链接:https://www.jianshu.com/p/f001acf3d733

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值