一个小测试
GreenDao版本 ‘implementation 'org.greenrobot:greendao:3.3.0'
Room版本 def room_version = "2.3.0"
第三个ORMLite对比 implementation 'com.j256.ormlite:ormlite-android:5.1'
注意:
- 实体类均是只有id和名字的pojo,具体Api调用请查看官网
测试不严谨,可能不准确,仅参考,耗时操作均在后台线程执行
测试时间本身也跟代码质量有关
ormlite:
greendao:
room:
insert 增
实体类如下(也不知对耗时有大影响吗):
GreenDao实体类:
@Entity
public class UserGreen {
@Id(autoincrement = true)
private Long id;
private String name;
@Generated(hash = 1543001085)
public UserGreen(Long id, String name) {
this.id = id;
this.name = name;
}
@Generated(hash = 1969559154)
public UserGreen() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
Room实体类:
@Dao
public interface UserRoomDao {
@Insert
void insert(List<UserRoom> userRooms);
@Insert
void insert(UserRoom userRoom);
//使用分页减少资源消耗
@Query("SELECT * FROM user_room order by name collate nocase asc")
PositionalDataSource<UserRoom> allUserByName();
@Query("select * from user_room")
List<UserRoom> queryAll();
@Update(entity = UserRoom.class)
void upData(UserRoom...userRoom);
@Query("select * from user_room where id = :aid")
UserRoom queryById(int aid);
}
三次插入耗时如下:
select 查询所有
update 修改同位置一条数据
这里测了好多次,不过也就选了几张图而已。
delete 删除同位置一条数据
写了个kotlin的Room测了下,看如下结果
总结
Room性能还是比较好的,不过它不支持sqlcipher加密,其他两个都有封装好了(用的sqlcipher),
Room加密的话需要引入第三方库CWAC-SafeRoom等,底层的话也是(SQLCipher),对Room的支持也挺好的。
Room属于Jetpack的一部分,支持Paging,LiveData等,可以说非常好用了,GreenDao的话得自己封装一套
最后附上测试代码地址,github网速慢,用gtee:
gtee:https://gitee.com/dragonsen/greendao-vsroom