Closed Bug 1391266 Opened 8 years ago Closed 7 years ago

Feature: Tracking protection: verify startup and tab init perf is minimally affected

Categories

(Firefox for iOS :: General, defect)

Other
iOS
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME
Tracking Status
fxios 9.0 ---

People

(Reporter: garvan, Assigned: garvan)

References

Details

(Whiteboard: [MobileCore])

follow up to bug 1390148 Areas of potential performance hits: - loading new JSON files into the rule store and 'compiling' and saving into the rule store - rule store has all rules compiled and saved, verify loading from disk at app start is performant - verify opening new tab and applying rule set changes (which should not require hitting the disk) is zero perf impact
Assignee: nobody → gkeeley
On an iPhone SE, to load the Strict blocklist set, the startup costs in the profiler are: - Fresh install (parsing required): 340ms on a dedicated background thread. The function to look for is WebCore::ContentExtensions:compileRuleList() -- overall startup time is not affected, we are main-thread bound startup. - Boot after parsed (WebKit loads the pre-parsed rules): I get no matches in the profiler for `ContentExtensions` during startup, or when creating a new tab that has content blockers. A simple profile filter for all `WebKit` symbols shows no significant difference between installing or not installing a content blocker, either on startup or the time to create a new tab. I am not concerned enough to investigate load-testing this by synthesizing a heavy list of rules for testing. Lastly, for additional interest, here is the startup time of 3 sessions in sequence with DYLD lib profiling (and I added a log message for when the web view begins loading, t0 for that timer is when main() is hit): 1) ContentBlocker disabled in code: Total pre-main time: 1.2 seconds (100.0%) dylib loading time: 995.84 milliseconds (81.0%) rebase/binding time: 67.10 milliseconds (5.4%) ObjC setup time: 53.66 milliseconds (4.3%) initializer time: 111.86 milliseconds (9.1%) slowest intializers : libSystem.B.dylib : 10.23 milliseconds (0.8%) libMainThreadChecker.dylib : 31.56 milliseconds (2.5%) app did finish launch time: 0.412301003932953 sec app did start first navigation: 0.775330007076263 sec 2) ContentBlocker enabled, parse required: Total pre-main time: 1.1 seconds (100.0%) dylib loading time: 1.0 seconds (87.6%) rebase/binding time: 34.89 milliseconds (3.0%) ObjC setup time: 32.93 milliseconds (2.8%) initializer time: 74.20 milliseconds (6.4%) slowest intializers : libSystem.B.dylib : 8.55 milliseconds (0.7%) app did finish launch time: 0.334550023078918 sec app did start first navigation: 0.63961797952652 sec 3) same as #1: Total pre-main time: 1.0 seconds (100.0%) dylib loading time: 963.63 milliseconds (87.8%) rebase/binding time: 27.99 milliseconds (2.5%) ObjC setup time: 32.28 milliseconds (2.9%) initializer time: 72.90 milliseconds (6.6%) slowest intializers : libSystem.B.dylib : 8.58 milliseconds (0.7%) app did finish launch time: 0.331308007240295 sec app did start first navigation: 0.673924028873444 sec
Closing bug, we have no facility to automate this testing. In future, as we add whole-app startup profiling to regression test we can use that test to watch for startup time regression with new features.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WORKSFORME
Whiteboard: [MobileCore]
You need to log in before you can comment on or make changes to this bug.