Skip to content

Instantly share code, notes, and snippets.

View Skyyo's full-sized avatar
🇺🇦

Denis Rudenko Skyyo

🇺🇦
View GitHub Profile
@Skyyo
Skyyo / perf_snippet_16.kt
Created October 2, 2022 15:47
perf_snippet_16
@Composable
private fun InputsWrapper(
name: String,
creditCardNumber: String,
onNameEntered: (value: String) -> Unit,
onCreditCardNumberEntered: (value: String) -> Unit,
) {
var count by remember {
mutableStateOf(0)
}
@Skyyo
Skyyo / perf_snippet_14.kt
Created October 2, 2022 15:25
perf_snippet_14
@Composable
fun StateReadsInlinedComposablesSolution2Screen() {
var count by remember { mutableStateOf(0) }
Column {
TextWrapper(provideCount = { count })
Button(onClick = { count++ }) {
Text(text = "count++")
}
}
}
@Skyyo
Skyyo / perf_snippet_13.kt
Created October 2, 2022 14:45
perf_snippet_13
@Composable
fun StateReadsInlinedComposablesScreen() {
var count by remember { mutableStateOf(0) }
WrappedColumn {
Text(text = "count: $count")
Button(onClick = { count++ }) {
Text(text = "increase count")
}
}
@Skyyo
Skyyo / perf_snippet_12.kt
Created October 2, 2022 14:41
perf_snippet_12
@Composable
fun StateReadsInlinedComposablesScreen() {
var count by remember { mutableStateOf(0) }
Column {
Text(text = "count: $count")
Button(onClick = { count++ }) {
Text(text = "count++")
}
}
@Skyyo
Skyyo / perf_snippet_11.kt
Created October 2, 2022 14:11
perf_snippet_11
@Composable
private fun WrappedLazyColumnApproach2(items: ImmutableList<Int>) {
LazyColumn {
items(items = items, key = { item -> item }) { item ->
Text(text = "item $item")
}
}
}
@Skyyo
Skyyo / perf_snippet_9.kt
Created October 2, 2022 14:03
perf_snippet_9
@Composable
fun UnstableListScreen() {
val items = remember { (0..100).map { it } }
Box {
WrappedLazyColumn(items)
}
}
@Composable
private fun WrappedLazyColumn(items: List<Int>) {
@Skyyo
Skyyo / perf_snippet_8.kt
Created October 2, 2022 13:35
perf_snippet_8
@Composable
fun UnstableLambdaScreen(viewModel: TypicalViewModel = hiltViewModel()) {
val focusRequester = LocalFocusManager.current
val onNameEnteredClick: (value: String) -> Unit = remember {
return@remember viewModel::onNameEntered
}
val clearFocus = remember { { focusRequester.clearFocus() } }
Column {
// stable lambdas, skippable button
@Skyyo
Skyyo / perf_snippet_7.kt
Created October 2, 2022 13:22
perf_snippet_7
@Composable
fun UnstableLambdaScreen(viewModel: TypicalViewModel = hiltViewModel()) {
Column {
// stable
Button(onClick = viewModel::onContinueClick) {
Text(text = "button with stable lambda")
}
}
}
@Skyyo
Skyyo / perf_snippet_6.kt
Created October 2, 2022 13:10
perf_snippet_6
@Composable
fun UnstableLambdaScreen() {
val focusRequester = LocalFocusManager.current
Column {
// unstable lambda results in unskippable Button
Button(onClick = { focusRequester.clearFocus() }) {
Text(text = "button with unstable lambda")
}
}
@Skyyo
Skyyo / perf_snippet_5.kt
Created October 2, 2022 12:49
perf_snippet_5
@Composable
fun UnstableLambdaScreen(viewModel: TypicalViewModel = hiltViewModel()) {
Column {
// button is not skippable due to usage of viewModel.onContinueClick()
Button(onClick = { viewModel.onContinueClick() }) {
Text(text = "button with unstable lambda")
}
}
}