我很好奇创建 Fetch 请求模板与以编程方式创建 NSFetchRequest 相比是否会带来性能提升,因此我编写了一些测试来衡量这一点。这是 github 上的源代码。
Simulator 和 iPhone 上的差异顺序相同(测量时间间隔以进行一堆获取):
just creating an NSFetchRequest: 4.399674
creating a Fetch Request Template: 0.501369
NSFetchRequest with field indexed: 0.407068
Fetch Request Template and field indexed: 0.281876
事实证明,创建 Fetch Request Template 大约有 7~9 倍的性能提升。我想也许它在下面创建了正确的索引,但是当我创建一个与索引字段匹配的获取请求模板时,甚至还有进一步的性能优势。
好的,很高兴知道是这种情况,但我非常想知道在 Fetch Request Template 下到底发生了什么导致性能提升?