realm
优点:
- 键值观察机制
- model 与table自动绑定
- 有人维护,有问题能得到反馈
- 兼容数据库版本升级
- 支持oc swift混合编写
缺点:
- pod下载包67M,动态库81M库有点大,整个ipa增大4M
-
以下方法只能在事物中调用
- 主键与rowid 主键的内容可以自己指定,需要不唯一
rowid是表自己生成的,自增长的index,外部不能修改,可以使用NSDate代替 - 所有模型对象皆继承自RLMObject,对代码侵入较高
Realm与多线程
1、多个线程之间不能共享Realm实例,每个线程通过 [RLMRealm defaultRealm];获取自己的realm实例
2、所有从受realm管理的实例RLMRealm、RLMObject、RLMResult等不能跨线程传递,如需传递,查文档
CoreData
原理图如下:
cordData与Realm性能对比
//realm
/*单次连续写入10000条 23.8 s*/
/*事物单次写入10000条 451 ms*/
/*单次连续读取10000条 6.62ms*/
/*单次连续更新10000条 935 ms*/
//coreData
/*单次连续写入10000条 33.2 s*/
/*事物单次写入10000条 202 ms*/
/*单次连续读取10000条 18.1ms*/
/*单次连续更新10000条 339 ms*/
代码链接: