From 4c9bdd16b081d8318ac4b82c41ab781ca51f44e7 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 17 Oct 2024 11:10:59 -0400 Subject: [PATCH] Add stopwatch for CallLog loading. --- .../calls/log/CallLogPagedDataSource.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt index 8409cbe7ee..3da5392b5d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt @@ -1,5 +1,7 @@ package org.thoughtcrime.securesms.calls.log +import org.signal.core.util.Stopwatch +import org.signal.core.util.logging.Log import org.signal.paging.PagedDataSource class CallLogPagedDataSource( @@ -8,6 +10,10 @@ class CallLogPagedDataSource( private val repository: CallRepository ) : PagedDataSource { + companion object { + private val TAG = Log.tag(CallLogPagedDataSource::class) + } + private val hasFilter = filter == CallLogFilter.MISSED private val hasCallLinkRow = filter == CallLogFilter.ALL && query.isNullOrEmpty() @@ -15,12 +21,21 @@ class CallLogPagedDataSource( private var callLinksCount = 0 override fun size(): Int { + val stopwatch = Stopwatch("size") + callEventsCount = repository.getCallsCount(query, filter) + stopwatch.split("calls") + callLinksCount = repository.getCallLinksCount(query, filter) + stopwatch.split("call-links") + stopwatch.stop(TAG) + return callEventsCount + callLinksCount + hasFilter.toInt() + hasCallLinkRow.toInt() } override fun load(start: Int, length: Int, totalSize: Int, cancellationSignal: PagedDataSource.CancellationSignal): MutableList { + val stopwatch = Stopwatch("load($start, $length)") + val callLogRows = mutableListOf() if (length <= 0) { return callLogRows @@ -35,6 +50,7 @@ class CallLogPagedDataSource( callLogRows.add(CallLogRow.CreateCallLink) remaining -= 1 } + stopwatch.split("init") if (start < callEventStart && remaining > 0) { val callLinks = repository.getCallLinks( @@ -48,6 +64,7 @@ class CallLogPagedDataSource( remaining -= callLinks.size } + stopwatch.split("call-links") if (start < clearFilterStart && remaining > 0) { val callEvents = repository.getCalls( @@ -61,12 +78,16 @@ class CallLogPagedDataSource( remaining -= callEvents.size } + stopwatch.split("calls") if (hasFilter && start <= clearFilterStart && remaining > 0) { callLogRows.add(CallLogRow.ClearFilter) } repository.onCallTabPageLoaded(callLogRows) + stopwatch.split("callback") + stopwatch.stop(TAG) + return callLogRows }