Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert Tabs to use database #4985

Open
wants to merge 35 commits into
base: main
Choose a base branch
from
Open

Convert Tabs to use database #4985

wants to merge 35 commits into from

Conversation

cooltey
Copy link
Collaborator

@cooltey cooltey commented Sep 24, 2024

@cooltey cooltey added the WIP Work in progress label Sep 24, 2024
@cooltey cooltey requested a review from dbrant as a code owner September 24, 2024 23:46
@cooltey cooltey added HOLD Will review as soon as other more pressing PRs are merged/released. and removed WIP Work in progress labels Sep 26, 2024
@cooltey
Copy link
Collaborator Author

cooltey commented Sep 26, 2024

A basic refactoring is completed. Pending discussion to see if we need to update the logic of handling tabs vs backstacks.

@cooltey cooltey requested a review from Williamrai as a code owner October 8, 2024 17:56
@cooltey cooltey removed the HOLD Will review as soon as other more pressing PRs are merged/released. label Oct 8, 2024
@cooltey
Copy link
Collaborator Author

cooltey commented Feb 19, 2025

Here are the results of the comparison:

Getting Tab counts

Switching between screens that have the TabCountsView embedded.

SharedPreference

99 Tabs: org.wikipedia.page.PageActivity@8a8e6d7 : 481094 nano seconds ~= 0 milliseconds
99 Tabs: org.wikipedia.page.PageActivity@8a8e6d7 : 329219 nano seconds ~= 0 milliseconds
99 Tabs: null : 373594 nano seconds ~= 0 milliseconds
99 Tabs: null : 390260 nano seconds ~= 0 milliseconds
99 Tabs: null : 1834531 nano seconds ~= 1 milliseconds
99 Tabs: null : 594010 nano seconds ~= 0 milliseconds
99 Tabs: null : 1522084 nano seconds ~= 1 milliseconds => Removes a tab
99 Tabs: null : 486146 nano seconds ~= 0 milliseconds
99 Tabs: null : 3110781 nano seconds ~= 3 milliseconds  => Adds a new tab
99 Tabs: null : 539635 nano seconds ~= 0 milliseconds
99 Tabs: org.wikipedia.main.MainActivity@e5f6958 : 69427 nano seconds ~= 0 milliseconds
99 Tabs: null : 109271 nano seconds ~= 0 milliseconds
99 Tabs: null : 253386 nano seconds ~= 0 milliseconds
99 Tabs: null : 398698 nano seconds ~= 0 milliseconds
99 Tabs: org.wikipedia.page.tabs.TabActivity@ec351f9 : 73177 nano seconds ~= 0 milliseconds

Database

99 Tabs: org.wikipedia.page.tabs.TabActivity@6e96d50 : 937500 nano seconds ~= 0 milliseconds
99 Tabs: org.wikipedia.page.tabs.TabActivity@6e96d50 : 972396 nano seconds ~= 0 milliseconds
99 Tabs: null : 679375 nano seconds ~= 0 milliseconds
99 Tabs: org.wikipedia.page.PageActivity@ea24126 : 254114 nano seconds ~= 0 milliseconds
99 Tabs: org.wikipedia.page.PageActivity@ea24126 : 368906 nano seconds ~= 0 milliseconds
99 Tabs: org.wikipedia.page.PageActivity@ea24126 : 356042 nano seconds ~= 0 milliseconds
99 Tabs: null : 330886 nano seconds ~= 0 milliseconds
99 Tabs: null : 381510 nano seconds ~= 0 milliseconds
99 Tabs: null : 1926511 nano seconds ~= 1 milliseconds
99 Tabs: null : 1226771 nano seconds ~= 1 milliseconds
99 Tabs: null : 840260 nano seconds ~= 0 milliseconds
99 Tabs: null : 334792 nano seconds ~= 0 milliseconds
99 Tabs: null : 569010 nano seconds ~= 0 milliseconds
99 Tabs: null : 445104 nano seconds ~= 0 milliseconds
99 Tabs: null : 1070520 nano seconds ~= 1 milliseconds  => Adds a new tab
99 Tabs: null : 438542 nano seconds ~= 0 milliseconds
99 Tabs: null : 307656 nano seconds ~= 0 milliseconds
99 Tabs: null : 294271 nano seconds ~= 0 milliseconds
99 Tabs: null : 437292 nano seconds ~= 0 milliseconds
99 Tabs: null : 320938 nano seconds ~= 0 milliseconds
99 Tabs: null : 337396 nano seconds ~= 0 milliseconds

Committing Tabs

Starts with 99 tabs, and do some add/remove tabs actions:

SharedPreference

commitTabs: 4486510 nano seconds ~= 4 milliseconds
commitTabs: 2336094 nano seconds ~= 2 milliseconds
commitTabs: 4442240 nano seconds ~= 4 milliseconds
commitTabs: 1541407 nano seconds ~= 1 milliseconds
commitTabs: 7172552 nano seconds ~= 7 milliseconds
commitTabs: 1680573 nano seconds ~= 1 milliseconds
commitTabs: 2547500 nano seconds ~= 2 milliseconds

Database

commitTabs: 26842500 nano seconds ~= 26 milliseconds
commitTabs: 51131771 nano seconds ~= 51 milliseconds
commitTabs: 29053646 nano seconds ~= 29 milliseconds
commitTabs: 18281302 nano seconds ~= 18 milliseconds
commitTabs: 21329896 nano seconds ~= 21 milliseconds
commitTabs: 35114740 nano seconds ~= 35 milliseconds
commitTabs: 27067552 nano seconds ~= 27 milliseconds

In conclusion, the SharedPreference performs better than the database, especially when trying to commit Tabs. I think we can optimize the way of handling the delete/add action instead of saving/deleting all tabs in the commitTabState() function.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants