【发布时间】:2016-08-10 03:02:22
【问题描述】:
我正在分析我的应用程序并发现在地图上创建超过 840 个标记时,iOS 版 Google 地图 (v2.0.1) 会占用 CPU。一旦我创建了第 841 个标记,CPU 就固定了大约 98%。
func loadMarkers() {
if(mapView != nil) {
let objects = objectAPI.getObjects()
for (index, object) in objects.enumerate() {
let marker = GMSMarker()
marker.snippet = object.title
marker.position = CLLocationCoordinate2D(latitude: object.lat.doubleValue, longitude: object.lng.doubleValue)
marker.icon = GMSMarker.markerImageWithColor(UIColor.redColor())
marker.map = mapView
}
}
跟踪显示它的性能在 EntityRenderer::Draw 中被杀死。为什么随机 840 个标记?如果我渲染 840 个或更少的标记,那么没问题。在模拟器和 6s Plus 设备上的行为相同。
Running Time Self (ms) Symbol Name
422370.0ms 98.5% 5.0 -[GMSDisplayLink displayLinkFired:]
422364.0ms 98.5% 7.0 -[GMSEntityRendererView draw]
422351.0ms 98.5% 0.0 -[GMSPhoenixRenderer drawIfNeeded]
422331.0ms 98.5% 341.0 gmscore::renderer::EntityRenderer::Draw(bool)
213215.0ms 49.7% 1373.0 (anonymous namespace)::StickerBehavior::Commit(gmscore::renderer::EntityRenderer*)
186073.0ms 43.4% 17786.0 (anonymous namespace)::StickerBehavior::SelectFrame(UIImage*, double, double)
【问题讨论】:
标签: ios swift performance google-maps