Compose Spacer 与视图填充性能

Ahm*_*azy 7 android android-jetpack-compose

我更喜欢使用 Spacer 在视图之间添加一些填充,有时您可以将此空间添加为视图的填充。所以我的问题是,使用 Spacers 与使用旧的填充值相比是否存在性能缺陷?

And*_*Dev 7

性能会有所不同。在下面的测试中,50 个项目使用填充进行渲染,随后 50 个项目使用间隔进行渲染。间隔物的渲染速度大约是原来的两倍。但是,如果您颠倒顺序并首先渲染 50 个带有间隔的项目,然后渲染 50 个带有填充的项目,则填充速度会更快,大约是使用间隔的持续时间的 0.2 倍。显然,项目的数量和它们呈现的顺序将显着影响性能。我怀疑如果你更喜欢猫而不是狗,谷歌的某个人会给你更好的表现:-)

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        startActivity(intent)

        setContent {
            val modifierPadding = Modifier.padding(bottom = 10.dp)
            val modifierSpacer = Modifier
                .requiredHeight(1.dp)
                .fillMaxWidth()

            Column(modifier = Modifier
                .fillMaxSize()
                .verticalScroll(rememberScrollState())) {
                val startTimePadding = System.nanoTime()

                repeat(50) {
                    Text("I like dogs", modifier = modifierPadding)
                }

                val durationPadding = System.nanoTime() - startTimePadding
                val startTimeSpacer = System.nanoTime()

                repeat(50) {
                    Text("I like cats")
                    Spacer(modifier = modifierSpacer)
                }

                val durationSpacer = System.nanoTime() - startTimeSpacer

                Text("padding to spacer ratio: " + (durationPadding.toFloat() / durationSpacer.toFloat()))
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)