man*_*mal 7 android frame-rate opengl-es
我通过OpenGL渲染对象,并在大多数情况下获得了60fps的平滑帧率.UNTIL我在后台线程中做了很多事情,比如从REST API中获取东西,处理它,以及向图形添加对象(低优先级的东西,我更关心UI流动性).然后渲染器将暂停很长一段时间,最多1秒(大约只要后台线程运行),然后恢复,就像没有发生任何事情一样.我注意到这是因为动画同时启动,并且在此期间卡住了.后台线程设置为最低优先级,垃圾收集最多需要100-200ms,但不是整秒.当我在后台任务中的任何位置设置调试点时,渲染继续正常,没有任何延迟.
我的沉重的后台线程是否有可能使OpenGL线程匮乏?如果是这样,我该怎么办?
当然!GPU 需要输入数据,而这由 CPU 完成。因此,如果系统中出现瓶颈,例如 I/O 或 CPU 处理,那么 GPU 就无法得到满足。例如,动画传统上是在 CPU 上完成的。这就是为什么您可以在 PC 上使用相同的图形芯片但使用不同的 CPU 获得更高的帧速率的许多游戏。
我也同意分析是一个非常好的主意。如果可以的话,我建议进行分析以确保它实际上是 REST 调用,或者 REST 调用是否是众多事情之一
我注意到关于 REST 处理的一件事,这件事发生在我身上。由于 REST 有时会处理大量字符串,如果您不使用 StringBuilder,最终可能会引发大量垃圾收集。然而,听起来你并没有明白这一点。
| 归档时间: |
|
| 查看次数: |
633 次 |
| 最近记录: |