You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Benjamin Hill (JIRA)" <ji...@apache.org> on 2013/04/18 23:44:13 UTC

[jira] [Commented] (CB-402) Improve Contacts search taking a long time by using (NSArray*)filteredArrayUsingPredicate:(NSPredicate*)predicate

    [ https://issues.apache.org/jira/browse/CB-402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13635730#comment-13635730 ] 

Benjamin Hill commented on CB-402:
----------------------------------

2.6.0 on an iPhone 4S running 6.1.3

search for all, return "displayName", "name", "emails"
2013-04-18 14:38:01.084 ArchiveContacts[1482:907] [LOG] #DEBUG About to search for all contacts...
2013-04-18 14:38:12.514 ArchiveContacts[1482:907] [LOG] #DEBUG Found contacts:2800
... so ~11 seconds to find 2800 contacts.

Changing the search to ["*"] increases the time to return all contacts to

2013-04-18 14:40:24.148 ArchiveContacts[1497:907] [LOG] #DEBUG About to search for all contacts...
2013-04-18 14:42:01.482 ArchiveContacts[1497:907] [LOG] #DEBUG Found contacts:2800

~ 2 minutes.

Both 11 seconds to get the basic info and 2 minutes to get the full info seems really long, even for 3k worth of contacts.  The native AB is instant.
                
> Improve Contacts search taking a long time by using (NSArray*)filteredArrayUsingPredicate:(NSPredicate*)predicate
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: CB-402
>                 URL: https://issues.apache.org/jira/browse/CB-402
>             Project: Apache Cordova
>          Issue Type: Improvement
>          Components: iOS
>            Reporter: Shazron Abdullah
>            Priority: Minor
>              Labels: benchmark, unit-test
>             Fix For: 2.7.0
>
>
> We have to analyze this first to see if it is a big problem, with a huge N. I believe it is.
> Right now our search method is O( n ), while using Apple's search method it is possibly O( log n ) - but that's just a guess if I assume internally they use a binary search.
> Steps:
> 1. Grab all the contacts in a NSArray through ABAddressBookCopyArrayOfAllPeople
> 2. Construct a NSPredicate for the filter, and call filteredArrayUsingPredicate on the NSArray returned in step 1.
> 3. Convert the NSArray returned in step 2. to our CDVContact objects

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira