Мне было любопытно, было ли увеличение производительности от создания шаблона запроса на выборки по сравнению с программным созданием NSFetchRequest, поэтому я написал несколько тестов для его измерения. Здесь источник на github.
Одинаковый порядок разницы в симуляторе и на 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
Оказалось, что в создании шаблона запроса на выборки наблюдается увеличение производительности в 7-9 раз. Я подумал, что, возможно, он создает соответствующий индекс под ним, но когда я создал шаблон запроса на выборку, который соответствует индексированному полю, есть еще более благоприятная производительность.
Хорошо, приятно знать, что это так, но мне очень хотелось бы знать, что происходит в рамках шаблона запроса на выборку, который учитывает прирост производительности?