Grote hoeveelheden data & Core Data [updated]

Core Data is erg handig voor het opslaan van gegevens in je iPhone app. Alleen soms heb je grote hoeveelheden data en wordt de vertraging merkbaar.

Laten we beginnen met het debuggen van Core Data:
Ga naar ‘Product’ -> ‘Edit ¬†Scheme..’. Selecteer aan de linkerkant ‘Run YOURAPPNAME.app’ en klik vervolgens aan de rechterkant ‘Arguments Passed On Launch’ op de ‘+’ en voeg de volgende regel toe ‘-com.apple.CoreData.SQLDebug 1’. Zorg er wel voor dat je het juiste schema bewerkt.

Vervolgens kan je de app lanceren en krijg je in de console veel informatie, bijvoorbeeld ‘CoreData: annotation: total fetch execution time: 1.8620s for 14379 rows’. Na verder onderzoek wordt de vertraging¬†voornamelijk veroorzaakt door het sorteren met ‘NSSortDescriptor’. In mijn geval bijna een seconde.

Laten we beginnen met het toevoegen van een index op het veld waar ik op sorteer. Probleem 1: Vanaf dat moment wordt de index gebruikt en dit werkt dus helaas niet op bestaande data. Eerst maar even data toevoegen bij het opstarten van de app. Indien de data zich in de simulator bevindt kan je ook gebruik maken van het ‘CREATE INDEX’ commando in ‘sqlite3’.

[update 11-06-2012] Bij het toevoegen van een index lijkt het verstandig om de app te verwijderen en opnieuw te installeren op de iPhone. Echter was dat bij mij een minimale tijdswinst. De oorzaak werd bij mij met name veroorzaakt door een ‘overbodige loop’ en de ‘MKPolyline’. Het verwijderen van de overbodige loop en door er voor te zorgen dat het volgende punt anders dan de vorige (ipv twee punten op exact dezelfde locatie) leverde mij een aanzienlijke tijdswinst op.

Voorlopig een wenselijke oplossing.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *