私は3つの連絡先と1つのグループで約12000の番号をインポートするアプリを持っています。iOS 6以降、このプロセスにはiOS5.1の以前の5倍の時間が必要です。シミュレーターでは、デバイスほど遅くはありません。
プロファイリングを試してみたところ、メイン時間がABAddressBookSaveによって実行時間の28%で使用されていることがわかりました。また、Addressbookのすべてが以前よりも遅いと感じました。iOS 5では、合計実行時間の約3%です。メモリとCPUは大丈夫です。
誰かが同様の問題を抱えていましたか、誰かがこれが起こる理由を見つけたり、それを修正するための解決策を見つけましたか?
これがstackTraceです。iOS 6でなぜそんなに遅いのですか?
実行時間自己シンボル名3212.0ms41.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
そしてここでiOS5の同じ方法
実行時間自己シンボル名
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