You are currently viewing a snapshot of taken on April 21, 2008. Most of this content is highly out of date (some pages haven't been updated since the project began in 1998) and exists for historical purposes only. If there are any pages on this archive site that you think should be added back to, please file a bug.

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 <>
$Id: index.html,v 1.45 2003/09/06 23:49:33 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


    Things to Do

    Team Contact Info

    Related Sites

    Chris McAfee, Blake Ross