xpapps performance
Performance meetings in Engineering Pit | |
Wed 1:00pm | 1-877-319-3725 id=0000 |
Thu 1:30pm | 1-877-319-3725 id=0000 |
Contact: Chris McAfee <mcafee@netscape.com>
$Id: index.html,v 1.45 2003/09/06 23:49:33 sspitzer%netscape.com Exp $
In addition to speeding up the layout engine, we need to look at overall app speed. This page will focus on non-page layout performance problems. Please use news://netscape.public.mozilla.performance and news://netscape.public.mozilla.porkjockeys to discuss and/or catch up on current performance activity, and add the perf and topperf keywords to bugs as appropriate.
Problem Areas
- Startup (7251)
- JS/prefs loading
- Too many nsEventListenerManagers @ startup (68074)
- Loading java & all plugins @ startup (26516)
Bookmarks parsing is O(n**2)[2/20/01] Fixed- DLL loading
- Some DLL's are loaded to use only a few entry points, varada was looking at somehow combining these into a startup DLL to avoid loading unnecessary DLL's at startup (12896, 29249, 46800)
- Win32: Working Set, /OUTPUT linker directive (65845)
- Win32: Look at preloading DLL's at machine startup (36283, mcafee, pchen, law). There would be a pref to toggle this, and dynamic profile mechanism (
ccarlen, 35559) would allow us to switch the profile when the user "starts the app" and chooses a profile.
- Selective CSS loading
- Packaging
- FastLoad of XUL (ben, 112064)
- New window opening (pchen, law)
- File I/O
- Turning cache off can improve performance dramatically, esp. on Mac
- Use strace on linux to look for unnecessary or slow file usage.
- stdout: only significant slowdown if in a tight loop
- Excessive stat() calls (29063)
- We seem to stat() right before many calls to open() and readlink(). Need to look at nsIFileSpec constructor, and/or usage.
- Event model (saari, heikki, joki)
- Implement priority event handling to give precedence to UI and chrome events, speeding them up and making them more responsive (danm, 50104).
- Start looking at DOM event propogation and possible recursion cases. saari suggests debugging events in nsPresShell to start.
- Look at PL (NSPR) events using NSPR log mechansim.
- Look at nsGUIEvents
- Layout problems @ xpapps level
- Poor incremental reflow in text control leads to slow typing with complicated content after the text control (attinasi, 67495)
- Tree-based UI
- Use sspitzer's batch API hack to speed up multiple tree item delete for bookmarks, waiting on 66583
- RDF-based tree performance problems will be fixed when RDF-based trees are able to convert to <outliner/> (waterson, 71530)
New outliner element for instant loading, column sorting and scrolling (hyatt)[3/6/01] Enabled on trunk
- Chrome complexity (CSS, JS, overlays)
- Unnecessary CSS loaded for each window open? Mailnews team tried reducing style rules and didn't find much gain here (hewitt, sspitzer)
- What is the cost of using an overlay?
- Precompile JS and load it incrementally (brendan, 68045)
- History
- Session history (radha, rpotts)
- Set boundaries on growth.
- Global history (alecf)
- Startup and use of browser can drag if too many files in global history.
- User-defined limits on growth.
- Improve mork performance -- small db that wasn't designed for large amounts of data or performance (bienvenu).
- Startup and use of browser can drag if too many files in global history.
- New cache (gordon, beard)
- Session history (radha, rpotts)
- Imglib2/libpr0n (pavlov, saari, pnunn, tor)
- Animated images should be cached (41268)
Throbber and progressbar cause slowdown (hyatt)[2/8/01] Fixed by not resolving style when value attr. changes~21% speedup on win32, similar speedup on mac, linux
- New image cache (pavlov).
- PSM in-process / psm2 (bryner, javi, thayes, lord)
- Complete integration with Mozilla
- Modularity
- In-process
- Cookies (morse)
- Writing entire cookie file for each page cookie.
- Strings (scc, dbaron)
Filed Performance Bugs
Trends/Data
Things to Do
- Organize a tasks list for who's doing what.
- Are people actually working on the above? Need to get organized and get busy.
- Post daily/weekly performance data derived from
automated testing.
- Get with Netscape QA to create browser timing tests similar to the Mail/News performance page. (mcafee, paw)
- Produce mozilla/embedding delta data(mcafee, jrgm)
- Post startup times in the daily reports (jrgm)
- Post runs of Quantify, jprof, eazel, strace
- Can QA do this? Engineers should be focused on fixing, not profiling.
- Post jrgm test suite to mozilla.org (mcafee)
Team Contact Info
Related Sites
Chris McAfee, Blake Ross