From 23fad2a8186b81331a84590be6b49ec61b847591 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 15 Dec 2023 15:30:16 -0500 Subject: [PATCH] removing some old time measuring code for additional performance. --- .../ui/dal/ChatroomListKnownFeedFilter.kt | 90 +++++++++---------- .../ui/dal/ChatroomListNewFeedFilter.kt | 56 ++++++------ .../amethyst/ui/note/MultiSetCompose.kt | 50 ++++------- .../amethyst/ui/note/NoteCompose.kt | 46 ++++------ .../ui/screen/ChatroomListFeedView.kt | 15 ++-- .../amethyst/ui/screen/FeedView.kt | 36 ++++---- 6 files changed, 120 insertions(+), 173 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt index c14c8a4d8..f07a7928e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt @@ -7,7 +7,6 @@ import com.vitorpamplona.amethyst.ui.actions.updated import com.vitorpamplona.quartz.events.ChannelMessageEvent import com.vitorpamplona.quartz.events.ChatroomKey import com.vitorpamplona.quartz.events.ChatroomKeyable -import kotlin.time.measureTimedValue class ChatroomListKnownFeedFilter(val account: Account) : AdditiveFeedFilter() { @@ -46,58 +45,53 @@ class ChatroomListKnownFeedFilter(val account: Account) : AdditiveFeedFilter, newItems: Set): List { - val (feed, elapsed) = measureTimedValue { - val me = account.userProfile() + val me = account.userProfile() - // Gets the latest message by channel from the new items. - val newRelevantPublicMessages = filterRelevantPublicMessages(newItems, account) + // Gets the latest message by channel from the new items. + val newRelevantPublicMessages = filterRelevantPublicMessages(newItems, account) - // Gets the latest message by room from the new items. - val newRelevantPrivateMessages = filterRelevantPrivateMessages(newItems, account) + // Gets the latest message by room from the new items. + val newRelevantPrivateMessages = filterRelevantPrivateMessages(newItems, account) - if (newRelevantPrivateMessages.isEmpty() && newRelevantPublicMessages.isEmpty()) { - return oldList - } - - var myNewList = oldList - - newRelevantPublicMessages.forEach { newNotePair -> - var hasUpdated = false - oldList.forEach { oldNote -> - if (newNotePair.key == oldNote.channelHex()) { - hasUpdated = true - if ((newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0)) { - myNewList = myNewList.updated(oldNote, newNotePair.value) - } - } - } - if (!hasUpdated) { - myNewList = myNewList.plus(newNotePair.value) - } - } - - newRelevantPrivateMessages.forEach { newNotePair -> - var hasUpdated = false - oldList.forEach { oldNote -> - val oldRoom = (oldNote.event as? ChatroomKeyable)?.chatroomKey(me.pubkeyHex) - - if (newNotePair.key == oldRoom) { - hasUpdated = true - if ((newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0)) { - myNewList = myNewList.updated(oldNote, newNotePair.value) - } - } - } - if (!hasUpdated) { - myNewList = myNewList.plus(newNotePair.value) - } - } - - sort(myNewList.toSet()).take(1000) + if (newRelevantPrivateMessages.isEmpty() && newRelevantPublicMessages.isEmpty()) { + return oldList } - // Log.d("Time", "${this.javaClass.simpleName} Modified Additive Feed in $elapsed with ${feed.size} objects") - return feed + var myNewList = oldList + + newRelevantPublicMessages.forEach { newNotePair -> + var hasUpdated = false + oldList.forEach { oldNote -> + if (newNotePair.key == oldNote.channelHex()) { + hasUpdated = true + if ((newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0)) { + myNewList = myNewList.updated(oldNote, newNotePair.value) + } + } + } + if (!hasUpdated) { + myNewList = myNewList.plus(newNotePair.value) + } + } + + newRelevantPrivateMessages.forEach { newNotePair -> + var hasUpdated = false + oldList.forEach { oldNote -> + val oldRoom = (oldNote.event as? ChatroomKeyable)?.chatroomKey(me.pubkeyHex) + + if (newNotePair.key == oldRoom) { + hasUpdated = true + if ((newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0)) { + myNewList = myNewList.updated(oldNote, newNotePair.value) + } + } + } + if (!hasUpdated) { + myNewList = myNewList.plus(newNotePair.value) + } + } + + return sort(myNewList.toSet()).take(1000) } override fun applyFilter(newItems: Set): Set { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt index 7b3e760fa..07158b780 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt @@ -6,7 +6,6 @@ import com.vitorpamplona.amethyst.ui.actions.updated import com.vitorpamplona.quartz.events.ChatroomKey import com.vitorpamplona.quartz.events.ChatroomKeyable import com.vitorpamplona.quartz.events.PrivateDmEvent -import kotlin.time.measureTimedValue class ChatroomListNewFeedFilter(val account: Account) : AdditiveFeedFilter() { @@ -36,40 +35,35 @@ class ChatroomListNewFeedFilter(val account: Account) : AdditiveFeedFilter } override fun updateListWith(oldList: List, newItems: Set): List { - val (feed, elapsed) = measureTimedValue { - val me = account.userProfile() + val me = account.userProfile() - // Gets the latest message by room from the new items. - val newRelevantPrivateMessages = filterRelevantPrivateMessages(newItems, account) + // Gets the latest message by room from the new items. + val newRelevantPrivateMessages = filterRelevantPrivateMessages(newItems, account) - if (newRelevantPrivateMessages.isEmpty()) { - return oldList - } - - var myNewList = oldList - - newRelevantPrivateMessages.forEach { newNotePair -> - var hasUpdated = false - oldList.forEach { oldNote -> - val oldRoom = (oldNote.event as? ChatroomKeyable)?.chatroomKey(me.pubkeyHex) - - if (newNotePair.key == oldRoom) { - hasUpdated = true - if ((newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0)) { - myNewList = myNewList.updated(oldNote, newNotePair.value) - } - } - } - if (!hasUpdated) { - myNewList = myNewList.plus(newNotePair.value) - } - } - - sort(myNewList.toSet()).take(1000) + if (newRelevantPrivateMessages.isEmpty()) { + return oldList } - // Log.d("Time", "${this.javaClass.simpleName} Modified Additive Feed in $elapsed with ${feed.size} objects") - return feed + var myNewList = oldList + + newRelevantPrivateMessages.forEach { newNotePair -> + var hasUpdated = false + oldList.forEach { oldNote -> + val oldRoom = (oldNote.event as? ChatroomKeyable)?.chatroomKey(me.pubkeyHex) + + if (newNotePair.key == oldRoom) { + hasUpdated = true + if ((newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0)) { + myNewList = myNewList.updated(oldNote, newNotePair.value) + } + } + } + if (!hasUpdated) { + myNewList = myNewList.plus(newNotePair.value) + } + } + + return sort(myNewList.toSet()).take(1000) } override fun applyFilter(newItems: Set): Set { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt index ccb07e7ac..8ac6928ab 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt @@ -1,6 +1,5 @@ package com.vitorpamplona.amethyst.ui.note -import android.util.Log import androidx.compose.animation.Crossfade import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background @@ -76,7 +75,6 @@ import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlin.time.ExperimentalTime -import kotlin.time.measureTimedValue @OptIn(ExperimentalFoundationApi::class, ExperimentalTime::class) @Composable @@ -130,27 +128,21 @@ fun MultiSetCompose(multiSetCard: MultiSetCard, routeForLastRead: String, showHi } Column(modifier = columnModifier) { - val (value, elapsed) = measureTimedValue { - Galeries(multiSetCard, backgroundColor, accountViewModel, nav) - } - Log.d("Rendering Metrics", "All Galeries: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed - ") + Galeries(multiSetCard, backgroundColor, accountViewModel, nav) Row(Modifier.fillMaxWidth()) { Spacer(modifier = WidthAuthorPictureModifierWithPadding) - val (value, elapsed) = measureTimedValue { - NoteCompose( - baseNote = baseNote, - routeForLastRead = null, - modifier = remember { Modifier.padding(top = 5.dp) }, - isBoostedNote = true, - showHidden = showHidden, - parentBackgroundColor = backgroundColor, - accountViewModel = accountViewModel, - nav = nav - ) - } - Log.d("Rendering Metrics", "Complete: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed") + NoteCompose( + baseNote = baseNote, + routeForLastRead = null, + modifier = remember { Modifier.padding(top = 5.dp) }, + isBoostedNote = true, + showHidden = showHidden, + parentBackgroundColor = backgroundColor, + accountViewModel = accountViewModel, + nav = nav + ) NoteDropDownMenu(baseNote, popupExpanded, accountViewModel) } @@ -168,9 +160,6 @@ private fun Galeries( accountViewModel: AccountViewModel, nav: (String) -> Unit ) { - val boostEvents by remember { derivedStateOf { multiSetCard.boostEvents } } - val likeEvents by remember { derivedStateOf { multiSetCard.likeEventsByType } } - val hasZapEvents by remember { derivedStateOf { multiSetCard.zapEvents.isNotEmpty() } } val hasBoostEvents by remember { derivedStateOf { multiSetCard.boostEvents.isNotEmpty() } } val hasLikeEvents by remember { derivedStateOf { multiSetCard.likeEvents.isNotEmpty() } } @@ -188,26 +177,17 @@ private fun Galeries( } } - val (value, elapsed) = measureTimedValue { - RenderZapGallery(zapEvents, backgroundColor, nav, accountViewModel) - } - Log.d("Rendering Metrics", "Galeries Zaps: ${multiSetCard.note.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed") + RenderZapGallery(zapEvents, backgroundColor, nav, accountViewModel) } if (hasBoostEvents) { - val (value, elapsed) = measureTimedValue { - RenderBoostGallery(boostEvents, nav, accountViewModel) - } - Log.d("Rendering Metrics", "Galeries Repost: ${multiSetCard.note.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed") + RenderBoostGallery(multiSetCard.boostEvents, nav, accountViewModel) } if (hasLikeEvents) { - val (value, elapsed) = measureTimedValue { - likeEvents.forEach { - RenderLikeGallery(it.key, it.value, nav, accountViewModel) - } + multiSetCard.likeEventsByType.forEach { + RenderLikeGallery(it.key, it.value, nav, accountViewModel) } - Log.d("Rendering Metrics", "Galeries Like: ${multiSetCard.note.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed") } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 4f6ac9d28..2019e3648 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -220,7 +220,6 @@ import java.math.BigDecimal import java.net.URL import java.net.URLEncoder import java.util.Locale -import kotlin.time.measureTimedValue @OptIn(ExperimentalFoundationApi::class) @Composable @@ -961,30 +960,24 @@ fun InnerNoteWithReactions( ) { if (notBoostedNorQuote) { Column(WidthAuthorPictureModifier) { - val (value, elapsed) = measureTimedValue { - AuthorAndRelayInformation(baseNote, accountViewModel, nav) - } - Log.d("Rendering Metrics", "Author: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed") + AuthorAndRelayInformation(baseNote, accountViewModel, nav) } Spacer(modifier = DoubleHorzSpacer) } Column(Modifier.fillMaxWidth()) { val showSecondRow = baseNote.event !is RepostEvent && baseNote.event !is GenericRepostEvent && !isBoostedNote && !isQuotedNote - val (value, elapsed) = measureTimedValue { - NoteBody( - baseNote = baseNote, - showAuthorPicture = isQuotedNote, - unPackReply = unPackReply, - makeItShort = makeItShort, - canPreview = canPreview, - showSecondRow = showSecondRow, - backgroundColor = backgroundColor, - accountViewModel = accountViewModel, - nav = nav - ) - } - Log.d("Rendering Metrics", "TextBody: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed") + NoteBody( + baseNote = baseNote, + showAuthorPicture = isQuotedNote, + unPackReply = unPackReply, + makeItShort = makeItShort, + canPreview = canPreview, + showSecondRow = showSecondRow, + backgroundColor = backgroundColor, + accountViewModel = accountViewModel, + nav = nav + ) } } @@ -997,15 +990,12 @@ fun InnerNoteWithReactions( Spacer(modifier = DoubleVertSpacer) } } else { - val (value, elapsed) = measureTimedValue { - ReactionsRow( - baseNote = baseNote, - showReactionDetail = notBoostedNorQuote, - accountViewModel = accountViewModel, - nav = nav - ) - } - Log.d("Rendering Metrics", "Reaction: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed") + ReactionsRow( + baseNote = baseNote, + showReactionDetail = notBoostedNorQuote, + accountViewModel = accountViewModel, + nav = nav + ) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ChatroomListFeedView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ChatroomListFeedView.kt index 8a1855e8e..72ccbba7a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ChatroomListFeedView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ChatroomListFeedView.kt @@ -1,6 +1,5 @@ package com.vitorpamplona.amethyst.ui.screen -import android.util.Log import androidx.compose.animation.Crossfade import androidx.compose.animation.core.tween import androidx.compose.foundation.layout.Row @@ -18,7 +17,6 @@ import com.vitorpamplona.amethyst.ui.note.ChatroomHeaderCompose import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.FeedPadding import kotlin.time.ExperimentalTime -import kotlin.time.measureTimedValue @Composable fun ChatroomListFeedView( @@ -96,14 +94,11 @@ private fun FeedLoaded( key = { index, item -> if (index == 0) index else item.idHex } ) { _, item -> Row(Modifier.fillMaxWidth()) { - val (value, elapsed) = measureTimedValue { - ChatroomHeaderCompose( - item, - accountViewModel = accountViewModel, - nav = nav - ) - } - Log.d("Rendering Metrics", "Chat Header Complete: ${item.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed") + ChatroomHeaderCompose( + item, + accountViewModel = accountViewModel, + nav = nav + ) } } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedView.kt index dcf94aca0..5d68a697a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedView.kt @@ -1,6 +1,5 @@ package com.vitorpamplona.amethyst.ui.screen -import android.util.Log import androidx.compose.animation.Crossfade import androidx.compose.animation.core.tween import androidx.compose.foundation.ExperimentalFoundationApi @@ -38,7 +37,6 @@ import com.vitorpamplona.amethyst.ui.note.NoteCompose import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.FeedPadding import kotlin.time.ExperimentalTime -import kotlin.time.measureTimedValue @Composable fun RefresheableFeedView( @@ -224,27 +222,23 @@ private fun FeedLoaded( state = listState ) { itemsIndexed(state.feed.value, key = { _, item -> item.idHex }) { _, item -> - val (value, elapsed) = measureTimedValue { - val defaultModifier = remember { - Modifier - .fillMaxWidth() - .animateItemPlacement() - } - - Row(defaultModifier) { - NoteCompose( - item, - routeForLastRead = routeForLastRead, - modifier = Modifier, - isBoostedNote = false, - showHidden = state.showHidden.value, - accountViewModel = accountViewModel, - nav = nav - ) - } + val defaultModifier = remember { + Modifier + .fillMaxWidth() + .animateItemPlacement() } - Log.d("Rendering Metrics", "Complete: ${item.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed") + Row(defaultModifier) { + NoteCompose( + item, + routeForLastRead = routeForLastRead, + modifier = Modifier, + isBoostedNote = false, + showHidden = state.showHidden.value, + accountViewModel = accountViewModel, + nav = nav + ) + } } } }