看到谷歌开发者公众号推送了一遍“Android O迁移测试 : Room”的文章。心血来潮,特想试一下这个新的构建组件。
其实ORM框架早已有之,GreenDAO和ORMLite也都很受欢迎,这次谷歌官方钦定了一个自己的ORM框架:Room,用法上几乎和其他框架差不太多。
在数据库的选项上,最近一直很心水realm,性能和加密都很不错,所以,就拿realm和官方的Room对比测试,看一下二者在数据插入时的性能表现。
插入数据(1000条)
E/MainActivity: Room 测试写入数据开始
E/MainActivity: Room 写入数据完成: 64
E/MainActivity: realm 测试写入数据开始
E/MainActivity: realm 写入完成: 46
更新数据(1000条)
E/MainActivity: Room 测试写入数据开始
E/MainActivity: Room 写入数据完成: 41
E/MainActivity: realm 测试写入数据开始
E/MainActivity: realm 写入完成: 15
插入数据(10000条)
E/MainActivity: Room 测试写入数据开始
E/MainActivity: Room 写入数据完成: 2727
E/MainActivity: realm 测试写入数据开始
E/MainActivity: realm 写入完成: 3004
更新数据(10000条)
E/MainActivity: Room 测试写入数据开始
E/MainActivity: Room 写入数据完成: 3238
E/MainActivity: realm 测试写入数据开始
E/MainActivity: realm 写入完成: 1614
插入数据(1000000条)
E/MainActivity: Room 测试写入数据开始
E/MainActivity: Room 写入数据完成: 28435
E/MainActivity: realm 测试写入数据开始
E/MainActivity: realm 写入完成: 33157
更新数据(1000000条)
E/MainActivity: Room 测试写入数据开始
E/MainActivity: Room 写入数据完成: 30766
E/MainActivity: realm 测试写入数据开始
E/MainActivity: realm 写入完成: 17274
由此可以看出,数据插入,二者的表现差不太多,但是在数据更新时,realm的效率明显更高,时间基本上是Room的一半。
在API的封装上,Room和Realm还是有点距离,realm的API给人的感觉比较优雅,所有的操作可以一路链式操作,而Room,还是需要自己去封装增删改查的方法,毕竟Room还是基于SQLite。
但是,Room的性能基本上也能满足我的需要,而且,配合着LiveData和LifeCycle服用,效果更佳。