I'm seeing a substantial degradation in Core Data fetch performance after just 
a few thousand objects, in the simulator on a beefy MacBook Pro.

My app loads data from the web, then uses an integer key in each downloaded 
record to find the local record in Core Data. So I do a lot of queries like 
this:

{
    NSFetchRequest* req = [[NSFetchRequest alloc] init];
    req.fetchLimit = 1;
    
    NSManagedObjectContext* moc = self.managedObjectContext;
    NSEntityDescription* entity = [NSEntityDescription entityForName: 
@"MissionEvent"
                                              inManagedObjectContext: moc];
    req.entity = entity;
    
    NSPredicate* pred = [NSPredicate predicateWithFormat: @"keyShadow == %ld", 
inMEP.mId];
    req.predicate = pred;
    
    NSError*        error = nil;
    NSArray* events = [self.managedObjectContext executeFetchRequest: req 
error: &error];
    ...
}

Basically, I query, the insert, over and over. As the number of records grows 
from 0 to 6000, the time it takes to execute this query grows from about 0.0007 
s to about 0.0126 s. Indexing is on for keyShadow:

sqlite> explain query plan SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZCLOCKSHADOW, 
t0.ZDESC, t0.ZDISABLEDSHADOW, t0.ZDURATIONSHADOW, t0.ZKEYSHADOW, 
t0.ZLASTMODIFIED, t0.ZNAME, t0.ZSEQUENCESHADOW, t0.ZTIMESHADOW, t0.ZTYPESHADOW, 
t0.ZMISSION FROM ZMISSIONEVENT t0 WHERE  t0.ZKEYSHADOW = ?
   ...> ;
sele  order          from  deta
----  -------------  ----  ----
0     0              0     SEARCH TABLE ZMISSIONEVENT AS t0 USING INDEX 
ZMISSIONEVENT_ZKEYSHADOW_INDEX (ZKEYSHADOW=?) (~10 rows)

This seems like pretty poor performance. Is this the best I can hope for?

Thanks,

-- 
Rick




_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to