Android Systrace内部的VerifyClass意味着什么?

Android Systrace内部的VerifyClass意味着什么?,android,android-layout,android-recyclerview,layout-inflater,systrace,Android,Android Layout,Android Recyclerview,Layout Inflater,Systrace,我正在查看我的应用程序生成的systrace,我发现一个帧太长了。 这是由于在膨胀“我的项目”视图时,RecyclerView的onCreateViewHolder导致的。使用ConstraintLayout,项目视图尽可能平坦。但是下面的systrace报告中有许多VerifyClass块,每个块需要17毫秒 那VerifyClass块是什么意思 很难说VerifyClass到底在做什么,因为它不是Android Java SDK或ConstraintLayout的一部分。我只在SDK的C部分

我正在查看我的应用程序生成的
systrace
,我发现一个帧太长了。 这是由于在膨胀“我的项目”视图时,
RecyclerView
onCreateViewHolder
导致的。使用
ConstraintLayout
,项目视图尽可能平坦。但是下面的
systrace
报告中有许多
VerifyClass
块,每个块需要17毫秒

VerifyClass
块是什么意思


很难说
VerifyClass
到底在做什么,因为它不是Android Java SDK或ConstraintLayout的一部分。我只在SDK的C部分提到:

但我有几点建议:

1) 尝试在发布模式下构建你的应用程序,看看你是否仍然存在FPS drop问题。我的假设是,这个VerifyClass是为调试构建而执行的,以对某些事情进行基准测试,但这只是一个猜测

2) 尽管ConstraintLayout具有方便的API和平面层次结构(这对图形遍历有积极影响),但它仍然比其他Android布局的测量和布局过程慢得多。原因是约束计算的复杂性。因此,在RecyclerView中使用它可能会在创建ViewHolder的过程中对性能造成重大影响。 如果列表单元格的层次结构足够简单,我建议切换到一些普通的布局并检查其行为。

不是真正的C++/Android运行时内部专家,无法清楚地解释
VerifyClass
方法中定义和实现的含义,但我不会太注意它的CPU执行时间

我要考虑的是您的
RecyclerView
项目,这些项目包含
ConstraintLayout
,其膨胀会消耗CPU时间


关于尝试发布版本的建议,这不会有任何区别-对本机
VerifyClass
方法的调用将针对调试版本和发布版本执行。

您看到的跟踪日志很可能来自,因此这是一个艺术问题。您可能想在logcat中查找与dex/oat/art相关的日志,看看它是否指出了一个明显的错误,您可以修复,但如果没有,它可能只是一个框架问题,您可以尝试在
上提交一个bug,它的测量和布局过程仍然比其他Android布局要慢得多(显然,除了FrameLayout之外)?我想看看这个语句所基于的一些数字。@EugenPechanec嵌套线性布局(可能带有权重)和非嵌套相对布局。这是基于我的基准,更重要的是,谷歌基准:。但是,请注意,“传统的”此基准中的布局效率极低,并且具有多个冗余和无用的相对布局,以人为降低性能。如果使用嵌套的线性布局(即使使用权重)重写此布局你会看到一个巨大的性能差异。ViFiyCype是Android平台的一部分,在C++中。调试与发布版本无关。