我正在開發一個iOS 5項目,並遇到嚴重的性能問題,我的應用程序始終將其降至< 10fps。時間分析工具已經確定了對objc::DenseMap
的調用,這似乎與Objective-C運行時中的保留/釋放/自動釋放系統有關。這個調用佔用了大量的處理時間,我想知道是否有人有任何解決這個問題的方法和/或避免這個問題的方法。我懷疑它與我用來管理每個框架對象的NSMutableArrays,NSMutableSets和其他可變集合有關。任何意見或洞察,跟蹤和解決它將不勝感激。下面是一切都在跟蹤,看起來重要的或相關的:從性能上分析iOS objc :: DenseMap性能
Running Time Self Symbol Name
1426.0ms 7.2% 1426.0 objc::DenseMap<objc_object*, unsigned long, true, objc::DenseMapInfo<objc_object*>, objc::DenseMapInfo<unsigned long> >::LookupBucketFor(objc_object* const&, std::pair<objc_object*, unsigned long>*&) const
817.0ms 4.1% 0.0 objc::DenseMap<objc_object*, unsigned long, true, objc::DenseMapInfo<objc_object*>, objc::DenseMapInfo<unsigned long> >::FindAndConstruct(objc_object* const&)
817.0ms 4.1% 0.0 _objc_rootRetain
817.0ms 4.1% 0.0 -[NSObject retain]
773.0ms 3.9% 0.0 objc_retain
28.0ms 0.1% 0.0 -[NSMutableArray removeObject:]
11.0ms 0.0% 0.0 CFRetain
580.0ms 2.9% 0.0 objc::DenseMap<objc_object*, unsigned long, true, objc::DenseMapInfo<objc_object*>, objc::DenseMapInfo<unsigned long> >::find(objc_object* const&)
580.0ms 2.9% 0.0 _objc_rootReleaseWasZero
580.0ms 2.9% 0.0 _objc_rootRelease
562.0ms 2.8% 0.0 objc_release
1.0ms 0.0% 0.0 CFRelease
19.0ms 0.0% 0.0 objc::DenseMap<objc_object*, unsigned long, true, objc::DenseMapInfo<objc_object*>, objc::DenseMapInfo<unsigned long> >::grow(unsigned int)
19.0ms 0.0% 0.0 objc::DenseMap<objc_object*, unsigned long, true, objc::DenseMapInfo<objc_object*>, objc::DenseMapInfo<unsigned long> >::InsertIntoBucket(objc_object* const&, unsigned long const&, std::pair<objc_object*, unsigned long>*)
19.0ms 0.0% 0.0 objc::DenseMap<objc_object*, unsigned long, true, objc::DenseMapInfo<objc_object*>, objc::DenseMapInfo<unsigned long> >::FindAndConstruct(objc_object* const&)
19.0ms 0.0% 0.0 _objc_rootRetain
19.0ms 0.0% 0.0 -[NSObject retain]
15.0ms 0.0% 0.0 objc_retain
4.0ms 0.0% 0.0 -[NSMutableArray removeObject:]
5.0ms 0.0% 0.0 _objc_rootRetain
5.0ms 0.0% 0.0 -[NSObject retain]
4.0ms 0.0% 0.0 objc_retain
3.0ms 0.0% 0.0 objc_retainAutoreleasedReturnValue
1.0ms 0.0% 0.0 -[NSMutableArray removeObject:]
3.0ms 0.0% 0.0 _objc_rootReleaseWasZero
3.0ms 0.0% 0.0 _objc_rootRelease
3.0ms 0.0% 0.0 objc_release
2.0ms 0.0% 0.0 objc::DenseMap<objc_object*, unsigned long, true, objc::DenseMapInfo<objc_object*>, objc::DenseMapInfo<unsigned long> >::erase(objc_object* const&)
2.0ms 0.0% 0.0 objc_clear_deallocating
2.0ms 0.0% 0.0 objc_destructInstance
2.0ms 0.0% 0.0 CFRelease
很難說沒有更多的上下文。你能夠從樂器上發佈整個曲目嗎? –