ios - 地图加载时间长
问题描述
我面临与空地图加载时间长有关的问题Here-SDK-iOS
。
我打开了示例项目,看起来它冻结了一段时间,接下来是初始化代码:
override func loadView() {
super.loadView()
NSLog("%@", ">>>>>>>>>> Load View \(Date())")
}
override func viewDidLoad() {
super.viewDidLoad()
mapView = MapView(frame: view.bounds)
view.addSubview(mapView)
mapView.mapScene.loadScene(mapScheme: .normalDay, completion: self.onLoadScene)
mapView.gestures.tapDelegate = self
NSLog("%@", ">>>>>>>>>> View Did Load \(Date())")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
mapView.handleLowMemory()
}
func onLoadScene(_ error: MapError?) {
guard error == nil else {
print("Error: Map scene not loaded, \(String(describing: error))")
return
}
// Configure the map.
let camera = mapView.camera
camera.lookAt(point: GeoCoordinates(latitude: 52.518043, longitude: 13.405991),
distanceInMeters: 1000 * 10)
}
日志:
2021-06-25 08:45:27.500549+0300 testDrawing[50019:31547554] >>>>>>>>>> 加载视图 2021-06-25 05:45:27 +0000
...
2021-06-25 08:45:31.301998+0300 testDrawing[50019:31547554] >>>>>>>>>> 查看已加载 2021-06-25 05:45:31 +0000
如您所见,使用初始位置初始化地图大约需要 4 秒。注意:我使用免费增值帐户进行测试。
我还可以看到其他警告,例如
[警告] harp-sdk - 忽略添加无效的观察者
[警告] ResponseFromJsonBuilder - 缺少值,响应=olp::authentication::IntrospectAppResult,字段=描述
[INFO] harp-sdk - 添加数据源
[信息] Storage.LevelDB - 清除文件夹中的其他数据库:“/Users//Library/Developer/CoreSimulator/Devices/61082972-C4BE-42E2-9696-0D2458D475D5/data/Containers/Data/Application/74E993BF-7111-4E08- A27F-A7F62B3ADA1D/Library/Caches/v1/sSR8TFucGSrS94S4sDvrsA/analyticsData/events.sqlite
[信息] ThreadPoolTaskScheduler - 启动线程 'OLPSDKPOOL_0'
最耗时的操作 - 是Cleared other DB in folder
- 大约 3 秒。
任何人都可以建议这种行为的原因是什么。
- - 更新 - - -
我也收到随机崩溃
版本 = heresdk-explore-ios-4.7.5.0.5737
- - 更新 - - -
几个模式技术细节:
对于问题«freeze on start":
在带有 M1 和模拟器(12 Pro、iOS 14.5)的 Mac 和设备 12 Pro iOS 14.5 上进行了测试。在设备上滞后一点 - 1-3 秒,在模拟器上 - 最多 7 秒。heresdk-explore-ios-4.7.5.0.5737 heresdk-navigate-ios-4.7.6.0.5863
对于“启动时崩溃”:
12 Pro,iOS 14.5 都在这里sdk-explore-ios-4.7.5.0.5737
- - 更新 - -
嗨,分析服务的崩溃必须在即将发布的版本中修复。最耗时的操作 -
Cleared other DB in folder- about 3 sec.
没有证据表明此操作消耗 3 秒,可能在此操作之后发生了一些事情。– 希尔戈斯
@Hsilgos,
是的,没有证据表明这个操作确实消耗了 3 秒——这只是我的猜测(当我删除 sdk 时——一切都立即生效,所以这是简单的检查)。
以下是分析器的一些屏幕截图:
这是跟踪文件
在这里你可以看到 HARP.SDK.RENDERER(我猜是地图渲染器)消耗了大量资源,看起来 MainThread 正在等待它完成。
再次 - 这只是一个猜测。
另一个改进点 - 在 M1 上的 arm64 达尔文模拟器上添加对运行 fat 的支持。因为不是我需要使用 Rosetta ( - 这令人失望....
- - 更新 - -
绘图性能问题 - 示例(当一次绘制大约 200 个项目时,更准确地说 - 一个接一个 - 没有用于批量绘图的 API):
查看第二个绘图区域 - 那里的性能问题更加明显
解决方案
HERE SDK 团队今天宣布计划添加对 M1 arm64 模拟器构建的明确支持。目前尚不清楚这将在何时以及如何发生,但由于现在缺少它,因此与真实设备相比,在 Apple M1 处理器上运行模拟器会减慢速度。然而,对我来说,在 M1 上运行模拟器仍然比在非 M1 上运行模拟器快,只是因为 M1 速度非常快,而我的非 M1 MacBook 的设置速度不是最快的。
此外,分析崩溃似乎是一个已知问题。所以,希望我们能很快看到两者的修复。
推荐阅读
- r - 如何使用函数填充 R 中的空向量?
- python - 有没有办法在 JSON 文件的字段上运行 spaCy NER?
- javascript - 访问路由器参数 VueJS
- angular - 角度表单阵列上的单选按钮无法正确切换
- macos - macOS xargs 不会打开 mdfind 和 grep 找到的应用程序
- pandas - 如何转换此数据框并将过滤器应用于单元格?
- apache-zeppelin - Shiro如何保护数据源密码
- flutter - 使用 FutureBuilder 时如何过滤列表?
- vue.js - 没有找到这个相关模块?
- python - selenium 如何关闭 chrome 弹出窗口