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
      • Only load CSS at startup that's necessary to display the app being loaded (hewitt, 63246). Also saves memory.
    • 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
      • Nominal gain in removing thousands of unused dump()s, repetitive debug() functions, and other cruft (blakeross, 65127)
    • 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).
    • New cache (gordon, beard)

  • 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

    Team Contact Info

    Related Sites


    Chris McAfee, Blake Ross