Open ndegwamartin opened 3 months ago
Device Specs
Phone - Techno Spark 7
RAM - 3GB
ROM - 64GB
Android Version - 11
WiFi - 20Mbps Number of Households - 1025 Number of Clients - 10250 Number of tasks - 3075
Results
@Mstjamush Can you explicitly define the time format for the starts shared above? e.g. HH:MM:ss
@ellykits it's in HH:MM:ss format
@Mstjamush can you share the same results for 10k households please?
@pld Let me generate the HHs and share
Findings investigating the MWCore app:
Observation on the Search Query:
Opportunities for improvement
Ticket to track performance optimizations on the FHIR SDK engine - https://github.com/google/android-fhir/issues/2547
For the form loading, after profiling MWCore made the following observations for the Registration form:
Questionnaire
resource from the DB seems to introduce this latencyWe can implement a caching mechanism for the resources once loaded the first time and figure out an appropriate cache invalidation mechanism. This can be informed by various factors like we don't expect Questionnaire resources to change frequently during use.
For the page registers, after doing some further tests, we've realized that there are three types of queries that are run
The last two are the most costly, since they'd need to go through entire db rows to get the total count.
Also, to note, is that all queries in the sdk are wrapped within db transactions. From Room's documentation
Room will only perform at most one transaction at a time, additional transactions are queued and executed on a first come, first serve order.
So, a query can seem to take long because it's queued and waiting for other transactions to finish. That is, regardless of whether the queries are in different coroutines, and were running concurrently. For example, in our case assuming the 3 different query types are ran in 3 different coroutines, the order in which the transactions are called can be somewhat arbitrary and when in order of either 2 - 3 - 1 or 3 - 2 - 1 the query to populate the register would be the last one called and the register would seem to take too long to load/show
Separate ticket to track select query being queued, instead of running concurrently: https://github.com/google/android-fhir/issues/2552
Device Specs
Phone - SAMSUNG A12
RAM - 3GB
ROM - 64GB
Android Version - 12
_WiFi - 20Mbps Number of Clients - 7661
Results
Tests after refactors
Device Specs
Phone - SAMSUNG A12
RAM - 3GB
ROM - 64GB
Android Version - 12
_WiFi - 20Mbps Number of Clients - 7661
Results
Tests after refactors
Device Specs
Phone - SAMSUNG A12
RAM - 3GB
ROM - 64GB
Android Version - 12
_WiFi - 20Mbps Number of Clients - 7661
Results
Tests after refactors (Includes cache on forms)
Device Specs
Phone - SAMSUNG A12
RAM - 3GB
ROM - 64GB
Android Version - 12
_WiFi - 20Mbps Number of Clients - 7584
Results
Save forms has a questionnaire issue
was this performed on a version of the SDK with this PR included? https://github.com/google/android-fhir/pull/2565/files
was this performed on a version of the SDK with this PR included? https://github.com/google/android-fhir/pull/2565/files
No, the sdk versions didn't include the PR...we instead used chunking of the parameters from the app's side to prevent the error
Tests after refactors (Includes cache on forms)
Device Specs
Phone - SAMSUNG A12
RAM - 3GB
ROM - 64GB
Android Version - 12
_WiFi - 20Mbps Number of Clients - 7584
Results
@Gental-Giant the issue was fixed
Interesting that load time jumped up so much
Overview We need to conduct Volume Testing to see how the app scales with a lot of data. This testing will help highlight the various bottlenecks with the app.
Initial Test Data
We can gradually increase the data set size as we optimize and improve.
Tasks