NSCompoundPredicate の初期化に使用される配列内の副述語の順序は効率に影響しますか?
例:
NSString * str = [self getAStr];
NSManagedObject * mo = [self getAMo];
NSString * fmt = @"(stringAttribute ==[cd] %@) AND (relationships CONTAINS %@)";
NSString * fmt2 = @"relationships.@count != 0";
NSPredicate * p1 = [NSPredicate predicateWithFormat:fmt,str,mo];//expensive predicate
NSPredicate * p2 = [NSPredicate predicateWithFormat:fmt2,nil];//less expensive predicate
NSCompoundPredicate * cp = [NSCompoundPredicate andPredicateWithSubpredicates:@[p1,p2];
[self fetchSomethingWithPredicate:cp];
上記の例では、p1 と p2 の順序によって、複合述語の評価方法が変わりますか? p2 が false と評価された場合に p1 が無視されると仮定すると、明らかに最初に p2 を評価する方が効率的です。