3

我有一个应用程序可以在 3 个联系人和 1 个组中导入大约 12000 个号码。从 iOS 6 开始,这个过程需要的时间是 iOS 5.1 之前的 5 倍。在模拟器中它不像在设备上那么慢。

我尝试了一些分析,发现主要时间由 ABAddressBookSave 使用,执行时间为 28%。我也感觉到地址簿的一切都比以前慢了。在 iOS 5 上,它大约占总执行时间的 3%。内存和CPU没问题。

有没有人遇到过类似的问题,有没有人发现为什么会发生这种情况或找到解决方案来解决它?

这是一个堆栈跟踪。为什么 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.0 毫秒 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 CFR释放

4

0 回答 0