对CoreData和Realm进行基准测试

时间:2016-05-09 09:33:06

标签: ios core-data realm

如何正确地对CoreData和Realm进行基准测试?

我已经使用了单元测试,与CoreData相比,Realm数据库需要更多时间来添加100,000条数据(我认为这是不正确的)而且我没有使用InMemory,因为我&#39 ; m关注基准尽可能接近现实。

那么对数据库提取/添加/删除过程进行基准测试的正确方法是什么? XCTest?仪器

如果XCTest是方式,那么我必须对它进行错误的测试。我相信Realm应该至少在简单的数据库中胜过CoreData。

1 个答案:

答案 0 :(得分:0)

一些常见的基准测试问题:

  1. 您正在构建什么编译器优化级别?建立"发布"完全优化的模式是最佳的优化设置可能是您与您所看到的真实世界行为最接近的匹配。
  2. 您是在模拟器中还是在真实设备上进行基准测试?在真正的iOS设备上进行测试至关重要。
  3. 您的基准代码与实际使用情况有多接近?合成基准通常会产生误导,除非非常小心地反映库在实际中如何实际使用。例如,Realm的每个事务开销可能高于Core Data,因为它保留了隔离(" I"在ACID中:例如没有故障)领域)。但是,事务中的写入可能比Core Data更快。 Realm中的大多数查询都会更快,特别是图遍历。您是在创建大量小型交易还是少量大型交易?所有这些都会影响性能特征。
  4. 您是否意外地在基准测量中测量了不相关的代码?我不得不问,你对我在NSLog中花费大部分时间的一些基准代码感到惊讶......
  5. 最后,在大多数情况下,XCTest和Instruments不会对基准比较产生巨大影响。我实际上鼓励你看看乐器,以确认#4。