13-NSPersistentContainer性能比较
来源:互联网 发布:powerdvd源码输出 编辑:程序博客网 时间:2024/05/29 17:46
在iOS开发中,目前市场上有三种主流的数据库操作
- FMDB:使用最多
- realm:使用较多
- CoreData:目前使用较少
关于一种数据库技术的选择,无非就两个衡量条件
- 使用是否方便
- 操作大量数据时,是否耗时耗性能
接下来我们测试一下iOS10苹果对CoreData的改进有多么的给力!
传统的在主线程操作CoreData插入十万行数据
- 足足等了12s多
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //1.保存耗时操作之前的时间 NSDate *date = [NSDate date]; //2.添加10万行数据 for(int i=0;i<100000;i++) { //创建CoreData模型,注意这里的参数是默认的主线程管理对象上下文 Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:kHMCoreDataManager.persistentContainer.viewContext]; //赋值 person.name = @"坤哥"; person.age = 18; } //4.开时保存到数据库 [kHMCoreDataManager save]; //5.获取耗时操作之后的时间 NSDate *date1 = [NSDate date]; //6.输出两个耗时操作的时间差 NSLog(@"%f",[date1 timeIntervalSinceDate:date]);}
- 使用NSPersistentContainer的多线程操作数据库插入十万行数据
- 只需要0.18s
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //1.保存耗时操作之前的时间 NSDate *date = [NSDate date]; //2.创建一个新的多线程管理对象上下文 NSManagedObjectContext *context1 = [kHMCoreDataManager.persistentContainer newBackgroundContext]; //3.添加10万行数据 for(int i=0;i<100000;i++) { //创建CoreData模型,注意这里的参数上下文是基于多线程的 Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context1]; //赋值 person.name = @"坤哥"; person.age = 18; } //4.开启异步多线程保存到数据库 [kHMCoreDataManager.persistentContainer performBackgroundTask:^(NSManagedObjectContext * context) { //这里不能使用block中的context,而必须要使用上面的context1(在哪一个上下文中添加,就在哪一个上下文中保存) [context1 save:nil]; }]; //5.获取耗时操作之后的时间 NSDate *date1 = [NSDate date]; //6.输出两个耗时操作的时间差 NSLog(@"%f",[date1 timeIntervalSinceDate:date]);}
- 从上面的比较可以看出,iOS10之后新增的NSPersistentContainer使用多线程操作数据库的效率比主线程效率高了差不多五十倍!!!
0 0
- 13-NSPersistentContainer性能比较
- 10-NSPersistentContainer介绍
- 10-NSPersistentContainer介绍
- NSPersistentContainer 学习总结
- 性能比较
- 11-使用NSPersistentContainer搭建CoreData Stack
- 性能比较:事务处理控件
- 性能比较: 事务处理控件
- OLEDB的性能比较
- SQL查询性能比较
- 高端防火墙性能比较
- 比较Map的性能
- C++编译器性能比较
- 汽车防盗器,性能比较
- Entity Framework 性能比较
- 排序算法性能比较
- VSTS : 比较性能基准
- Math函数性能比较
- 09-CoreData iOS10.0变化
- Range Sum Query - Immutable
- 10-NSPersistentContainer介绍
- 11-使用NSPersistentContainer搭建CoreData Stack
- 12-CoreData操作大量数据时的注意细节
- 13-NSPersistentContainer性能比较
- 14-CoreData兼容iOS9和iOS10
- BeautifulSoup的高级应用 之 find findAll
- 搬家了,以后 在 www.JiFei.co 上写文章了。。。
- LeetCode 465. Optimal Account Balancing
- Leetcode 131. Palindrome Partitioning (Medium) (cpp)
- Volley 解析
- STL之map实现(一)
- STL之map实现(二)