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)
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
tracking-fxios:
--- → 9.0
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
Updated•7 years ago
|
Whiteboard: [MobileCore]
You need to log in
before you can comment on or make changes to this bug.
Description
•