我有一个应用程序可以在3个联系人和1个组中导入大约12000个数字。从iOS 6开始,这个过程比iOS 5.1需要5倍的时间。在模拟器中,它不像在设备上那么慢。
我尝试了一些分析,我发现ABAddressBookSave使用的主时间占执行时间的28%。我也觉得使用Addressbook的所有内容都比以前慢。在iOS 5上,它占总执行时间的3%左右。内存和CPU都可以。
有没有人有类似的问题,有没有人发现为什么会发生这种情况或发现解决方法?
这是一个stackTrace。为什么在iOS 6中这么慢?
运行时间自我符号名称 3212.0ms 41.6%0,0 ABAddressBookSave
3212.0ms 41.6%0,0 ABCSave
3212.0ms 41.6%0,0 ABCAddressBookSaveWithConflictPolicy
3198.0ms 41.4%0,0 CPRecordStoreSaveWithPreAndPostCallbacksAndTransactionType
3134.0ms 40.6%0,0 CFDictionaryApplyFunction
3134.0ms 40.6%0,0 CFBasicHashApply
3134.0ms 40.6%0,0 __CFDictionaryApplyFunction_block_invoke_0
3134.0ms 40.6%0,0 CPRecordStoreUpdateRecord
2971.0ms 38.5%0,0 _didSave
2971.0ms 38.5%0,0 ABCDContextUpdateSearchIndexForPersonAndProperties
2773.0ms 35.9%0,0 CPSqliteStatementPerform
2773.0ms 35.9%0,0 sqlite3_step
2773.0ms 35.9%0,0 sqlite3VdbeExec
2772.0ms 35.9%0,0 fts3UpdateMethod
2765.0ms 35.8%0,0 fts3PendingTermsAdd
2734.0ms 35.4%0,0 ABCFFTSTokenizerOpen
2734.0ms 35.4%0,0 ABTokenListPopulateFromString
2631.0ms 34.1%1,0 CFStringGetBytes
2630.0ms 34.1%2624,0 __CFStringEncodeByteStream
6.0ms 0.0%0,0 CFStringEncodingIsValidEncoding
这是iOS 5中的相同方法
运行时间自我符号名称
245.0ms 12.9%0,0 ABAddressBookSave
245.0ms 12.9%0,0 ABCSave
245.0ms 12.9%0,0 ABCAddressBookSaveWithConflictPolicy
234.0ms 12.3%0,0 CPRecordStoreSaveWithPreAndPostCallbacksAndTransactionType
167.0ms 8.8%0,0 CFDictionaryApplyFunction
167.0ms 8.8%0,0 CFBasicHashApply
167.0ms 8.8%0,0 __CFDictionaryApplyFunction_block_invoke_0
167.0ms 8.8%0,0 CPRecordStoreUpdateRecord
162.0ms 8.5%0,0 CFDictionaryApplyFunction
162.0ms 8.5%0,0 CFBasicHashApply
162.0ms 8.5%0,0 __CFDictionaryApplyFunction_block_invoke_0
162.0ms 8.5%0,0 CPRecordStoreSaveProperty
158.0ms 8.3%0,0 ABCMultiValueSave
158.0ms 8.3%1,0 ABCDBContextSaveMultiValue
143.0ms 7.5%0,0 CPSqliteConnectionAddRecord
143.0ms 7.5%1,0 CPSqliteConnectionAddRecordWithRowid
85.0ms 4.5%0,0 CPSqliteStatementPerform
16.0ms 0.8%2,0 CFRelease