我正在使用 systrace 在 Android 4.2.2 上的非根 Nexus 4 上测量我的应用程序的性能。我在报告中看到一些对我来说没有意义的东西,我想知道它们是否可能是 systrace 错误,或者是否有人可能知道这些症状的任何可能的根本原因。
1- 运行结束时在 performTraversals 下的大递归
链接到报告- 请查看运行结束时的大曲线(约 18 秒)。我的理解是 performTraversals 处于框架级别,它在其中绘制用户界面的单个框架。所以对我来说,它下面可能有递归调用是没有意义的。另外因为我在运行结束时得到了这种指数堆叠,我认为这实际上只是运行结束时数据的 systrace 中的一个缺陷。这种递归可行吗?这是什么意思?
2- 在缓冲交换时间长的运行中间执行遍历递归
链接到报告- 从 12 秒左右开始的有趣行为。当我在跑步过程中看到类似的东西时,我觉得也许我不应该把它写下来。此外,当一位同事告诉我忽略它时,我花了很多时间试图找出可能导致如此长的 eglSwapBuffers/queueBuffer (我的应用程序不使用 openGL,只是直接使用框架)的原因,但无济于事因为交换缓冲区总是即时的。可能还有更多吗?这里有什么要调查的吗?