gpt4 book ai didi

iphone - iOS objc::DenseMap性能

转载 作者:行者123 更新时间:2023-12-01 19:25:26 26 4
gpt4 key购买 nike

我正在研究iOS 5项目,并且遇到了严重的性能问题,使我的应用程序始终降低到<10fps。时间分析工具已识别出对objc::DenseMap的调用,这似乎与Objective-C运行时中的保留/释放/自动释放系统有关。该调用占用了大量的处理时间,我想知道是否有人可以解决该惩罚和/或避免此问题的方法。我怀疑这与NSMutableArrays,NSMutableSets和我用来管理每帧对象的其他可变集合有关。任何跟踪或解决此问题的建议或见解将不胜感激。以下是跟踪中看起来很重要或相关的所有内容:

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

最佳答案

从性能分析中筛选出系统库,然后查看指示内容。您正在查看堆栈的错误端。

通常,您的代码是一个相对较薄的单板,以创建特定应用程序所需的任何方式将系统框架粘合在一起。像这样的性能问题通常表明您的应用实现在算法上不理想;也许您经常重新整理资料,也许在使用缓存时清空/填充收藏夹,等等。

关于iphone - iOS objc::DenseMap性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com