by Cathleen Wang
Areas of Focus
- Memory Footprint
- XUL Element footprint
- general Layout footprint
- DeCOMtamination
- Other general improvements
- Start-up
- Fastload
- Delay loading resources
- Reduce the number of memory allocation on startup
- Architectual improvements
- DeCOMtamination
- Code Cleanup
- Perception improvements
- Other
- Page Loading
- DeCOMtamination
- Network Lib improvements
- Image Lib Optimizations
- View Positioning Improvements
- String Optimizations
- General Improvements
- Future
- DHTML
- New Window
- General Improvements
- Cache Rule Processors for XUL
- Eliminate nsIRuleNode (DeCOMify)
- XBL Footprint
- Recude Popup Listeners
- Window Close Performance on linux
- General Improvements
- Application Responsiveness
- General App Improvements
- Mail Improvements (see doc also)
- Slow Scrolling bugs...
- page load timing
- startup timing
- new window timing
- footprint
- Tree will be closed if any of the following condition occurs:
- 5% regression on startup
- 2% regression on page loading
- 5% increase on footprint
- significient increase in reflow count
Tables of Tasks...
| Tasks | Bugs | Owners | Delivery Milestone | Estimated Improvements |
|---|---|---|---|---|
| XUL Element Footprint Issues | | waterson | | 1% |
| | waterson | |   | |
| 46129: implement finer-grained sharing in XUL prototype cache | waterson | future |   | |
| 46183: xul cache should have a pragma no-cache | waterson | future |   | |
| 125400: Release unused xul/css/xbl from the XUL Prototype cache | varga | 1.3 alpha |   | |
| | waterson | | 5% | |
| 69996: refactor redundancies between XUL and XML/HTML | waterson | |   | |
| 55801: Null XUL DOM Methods unimplemented | waterson | 1.0.1 |   | |
| 74023: XUL and XBL should share the event handler map | waterson | future | minimal | |
| | hyatt | | 1% | |
| | hewitt | | 0.5% | |
| 104402: eliminate nsIChromeEventHandler interface from XUL element | waterson | | 0.5% | |
| 104406: stop using |id| attribute to identify elements for XUL template builder | waterson | | 1% | |
| | waterson | |   | |
| | waterson | | net loss, won't fix | |
| | waterson | |   | |
| | waterson | |   | |
| General Layout Footprint Issues | 17027: Eliminate dead code from layout to reduce footprint | kmcclusk | |   |
| | jst | |   | |
| | dbaron | |   | |
| | harishd | |   | |
| | waterson | |   | |
| DeCOMtamination | 153215: Kill internal use of nsIMemory? (calls to nsMemory::* go through too much indirection) | dougt | | minimal |
| | dbaron | | 2-3% | |
| 92144: investigate inlining of nsCOMPtr methods | dbaron | | <2% | |
| | rjesup | |   | |
| | dbaron | | <1% | |
| | hyatt | | 5% | |
| 104346: need |nsRefPtr| | dbaron | | dependency bug | |
| | jst | | pageload 1240ms->1224ms, xul 1583ms->1565ms, startup 6278ms->6238ms | |
| General Improvements | 49539: Does a >3.2MB file (bunch of tables, >7975 rows), really need 19MB of memory? | rpotts | | fixed by 87370 |
| | brendan | |   | |
| | brendan | |   | |
| | roc+moz@cs.cmu.edu | |   | |
| | dveditz | | 500K | |
| | pavlov | |   | |
| | tor@acm.org / nisheeth | |   | |
| | hyatt | | 6% footprint, some startup improvements | |
| 109963: improve XBL string usage | dbaron | |   | |
| 106161: merge Content and Layout libraries | | 1.0 |   | |
| | shanjian | | 8 charmap: 54K downto 12K 58 charmap: 464K downto 69k | |
| | alecf | | cut 4 bytes per nsStr | |
| | blythe | |   | |
| 110169: footprint: nsDNSLookup objects cost 1104 bytes each | gordon | |   | |
| | brendan | | 85120B downto 3200B | |
| | alecf | |   | |
| | bienvenu | |   | |
| | morse | |   | |
| | blythe | | -22% footprint on CSS declaration, 61,744 bytes on startup. | |
| 110163: footprint: 135236 btyes allocated by disk cache on startup | gordon | |   | |
| 117316: repeated attribute changes lead to infinite rule tree growth | dbaron |   |   | |
| | jst | |   | |
| 115973: 1MB churned by nsXPCWrappedJSClass::CallMethod | brendan | |   | |
| 116023: 1MB memory churned by nsParser::OnDataAvailable() calls ParserWriteFunc | dp | 0.9.9 |   | |
| | dp | | windows only | |
| | dp | | windows only | |
| Tasks | Bugs | Owners | Delivery Milestone | Estimated Improvements |
|---|---|---|---|---|
| Fastload | | brendan | | 5% |
| 94199: fastload XBL methods and properties (hyatt) | hyatt | | 3% | |
| | ben | |   | |
| 91242: CSS parsing is 5.5% of startup time (pierre) | dbaron | | 1% | |
| 110908: fastload pref files (4.1% startup) | bnesse | 1.0 | depends on bug 98533 | |
| 98533: Remove JS from prefs backend | bnesse | |   | |
| Delay Loading Resources | | dp | | 0.5% depends on number of plugins |
| | ddrinan | | 5% | |
| | pchen | |   | |
| 63000: Bookmarks should load asynchronously | ben | 1.0.1 |   | |
| | alecf | | 0.5% | |
| | jbetak | | 2% | |
| | jbetak | |   | |
| | shanjian | |   | |
| | jbetak | | 0.5% | |
| | jbetak | | 0.5% | |
| | jbetak | | 0.5% | |
| | nhotta | |   | |
| | ftang | |   | |
| | ftang | | 0.5% | |
| | shanjian | |   | |
| | ccarlen | |   | |
| 38621: Defer loading of history related dlls till after the browser window shows up | jaggernaut | |   | |
| | darin | FIXED | fixed by 89488 | |
| Reduce Number of Memory Allocations at startup | | brendan | |   |
| | | | 3-4% Ts | |
| 106356: reduce the number of memory allocation in CSS parser | dbaron | | 2% | |
| 106357: reduce number of memory allocation in XML parser | heikki | | 3% | |
| | dp | |   | |
| string sharing | scc & jag | 0.9.7 |   | |
| Architectual Improvements | | darin | | 2% |
| 93055: support partial reads from OnDataAvailable events | darin | |   | |
| | hyatt | | 2% | |
| | dp | | 1% | |
| 26291: string bundle shouldn't be using using OpenInputStream(), block UI thread | alecf | |   | |
| 106161: Merge Content and Layout libraries | | 1.0 | 2.5% | |
| | sfraser | |   | |
| | sfraser | |   | |
| 109207: the dtd handler take 3% of start up time | heikki | future |   | |
| 98533: Remove JS from prefs backend | bnesse | |   | |
| DeCOMtamination | 153215: Kill internal use of nsIMemory? (calls to nsMemory::* go through too much indirection) | dougt | | minimal |
| | dbaron | | 2-3% | |
| 92144: investigate inlining of nsCOMPtr methods | dbaron | | <2% | |
| | rjesup | |   | |
| | dbaron | | <1% | |
| | hyatt | | 5% | |
| 104346: need |nsRefPtr| | dbaron | | dependency bug | |
| | jst | | pageload 1240ms->1224ms, xul 1583ms->1565ms, startup 6278ms->6238ms | |
| Code Cleanups | | dougt | | 3% |
| | jband | | 1% | |
| | neeti | | minimal | |
| | neeti | |   | |
| | ccarlen | |   | |
| | dp | | 10% | |
| | blakeross | |   | |
| Perception Improvements | 66898: Active Splash screen on all platforms | sfraser | |   |
75599: [META] Turbo mode tracking bug
| ccarlen, pchen, law, bnesse, blakeross | |   | |
| | bryner | WONTFIX |   | |
| Other | 46775 [meta] static build 94221: Lack of code sharing in i18n converters hinders static build (nhotta, 0.9.8) | cathleen, granrose, sfraser, mcafee | | 2% |
| 65845: incorporate code coverage info into link process | dveditz | |   | |
| 45008: Optimize Color Depth of GIFs in Chrome | marlon | |   | |
| 113739: refactor chrome archives so less is loaded at startup | dveditz | |   | |
| 115973: 1MB churned by nsXPCWrappedJSClass::CallMethod | brendan | |   | |
| 46707: investigate xpt file loading performance/caching | dveditz | |   | |
| Regressions | 110340: Launch result numbers up across all platforms | jaggernaut | WONTFIX |   |
| 116483: 2-4% spike in startup time cleaning up dist | pavlov | |   | |
| Tasks | Bugs | Owners | Delivery Milestone | Estimated Improvements |
|---|---|---|---|---|
| DeCOMtamination | 153215: Kill internal use of nsIMemory? (calls to nsMemory::* go through too much indirection) | dougt | | minimal |
| | dbaron | | 2-3% | |
| 92144: investigate inlining of nsCOMPtr methods | dbaron | | <2% | |
| | rjesup | | | |
| | dbaron | | <1% | |
| | hyatt | | 5% | |
| 104346: need |nsRefPtr| | dbaron | | dependency bug | |
| | jst | | pageload 1240ms->1224ms, xul 1583ms->1565ms, startup 6278ms->6238ms | |
| Network Lib Improvements | | darin | |   |
| 34402: Need adjustable buffer sizes in nsSocketTransport | darin | |   | |
| | darin | |   | |
| 93055: support partial reads from OnDataAvailable events | darin | |   | |
| 103745: evaluate performance of mozilla cookies implementation | darin | |   | |
| 103864: optimize NS_OUTPUT_STREAM_BUFFER_SIZE (in nsFileStreams.cpp) | darin | |   | |
| | gordon | |   | |
| 77458: [mac] Cache is flakey, a lot of the time slower | gordon | |   | |
| 81724: disk cache needs stream wrappers (disk cache level 3) | gordon | | 4-5% | |
| Image Lib Optimization | | pavlov | |   |
| | tor@acm.org / nisheeth | |   | |
| | pavlov | |   | |
| | pavlov | |   | |
| 78300: Make imglib process data on a seperate thread | pavlov | |   | |
| | pavlov | |   | |
| 100250: Large images causes machine to lock up | pavlov | |   | |
| | pavlov | |   | |
| 96633: slow display of background image | pavlov | |   | |
| 78019: Some images loaded from server, but they should be in cache | pavlov | 1.0 |   | |
| | rjesup@wgate.com | |   | |
| Layout Improvements | | evaughan | |   |
| | kmcclusk | |   | |
| 69010: nsRenderingContext::FillRect is waaaaay slow because we paint too much | dcone | |   | |
| 34887: Need to optimize painting of overlapping opaque frames | kmcclusk | |   | |
| | attinasi | |   | |
| 75106: Possible performance improvement in rendering iframes under Linux | evaughan | 0.9.8 |   | |
| 99924: Webpage brings Mozilla to its knees | kmcclusk | 0.9.8 |   | |
| | rods | |   | |
| 107064: large thread refuses to display | attinasi | |   | |
| | attinasi | |   | |
| 74775: GetTextExtentPoint32A called three times as often as necessary | attinasi | |   | |
| Long Page Problems | 77938: investigate nsTextFrame::ComputeWordFragmentWidth() implementation | waterson | |   |
| | bryner | | small | |
| 77945: excessive invalidation in nsTextFrame::Reflow() | waterson | |  ? | |
| 77948: improve nsHTMLReflowState's ctor | bryner | |   | |
| | attinasi | | benefit long text doc | |
| 77956: nsPresContext::ProbePseudoStyleContextFor() | waterson | |   investigate | |
| 99691: nsBoxToBlockAdaptor should not be creating a space manager | waterson | | minimal | |
| | dbaron | | 0-33% | |
| 109428: PresShell::ContentAppended calls GPFF on every frame that it added | dbaron | | 0-70% (on pages w/ flat long content tree) | |
| 86950: make floats not require state recovery | dbaron | |   | |
| 90725: Don't allocate space managers that won't be used | dbaron | |   | |
| 72885: Large text document take 21X longer to load than in 4.x 67756: File loads ~14X slower than NS4.76 | waterson | future | investigate after | |
| 42412: Large page redraws/reflows far too often | waterson | | re-evaluate | |
| 57451: Extreme slowness when loading long pages of text from disk | waterson | | re-evaluate | |
| 97815: Font statement is causing performance problems | harishd | |   | |
| 57209: Rewrite HTML form controls using XBL (XBL form controls) | bryner | |   | |
| View Positioning Improvements | 97934: NS_FRAME_SYNC_FRAME_AND_VIEW bit is write-only | dbaron | | minimal |
| 100585: don't position views during first-pass reflow | waterson | | 2% | |
| 100590: analyze/optimize block frame's post-reflow line and frame placement | waterson | |   | |
| String Optimization | 77460 buglists hang mozilla for long periods of time using all available CPU | rjc | |   |
| string sharing, add support for copy on write | scc, jag |   |   | |
| Make nsDependentString non-writable | jag |   |   | |
| Fix assigning into nsSharableString / ns XPIDLString | dbaron |   |   | |
| ns*String should be only consumers of nsStr | alecf | | effort to get rid of nsStr | |
| General Improvements | | hyatt | | 5% (win32) |
| | bryner | |   | |
| 91956: nsFontCache destroyed whenever a webshell is released | bryner | 0.9.8? |   | |
| 100588: block code should be more conservative about reflowing children | waterson | |   | |
| 101870: (mac only) page load get progressively slower with subsequent runs in the same session | sfraser | 0.9.8 |   | |
| 73624: Pages loading is much slower running in 256 colors | saari | |   | |
| 54542: Large tables are slow | dbaron | |   | |
| 84466: Page takes > 60s to render; many list elements are missing | attinasi | |   | |
| | jst | | regression | |
| 109415: investigate default memory cache size | tever | 0.9.8 |   | |
| 105344: Memory cache pref should be a percentage of physical RAM | gordon | |   | |
| 57209: Rewrite HTML form controls using XBL (XBL form controls) | bryner | |   | |
| | kmcclusk | |   | |
| 77989: javascript-generated and data: documents wait 1.2s before painting | | |   | |
| 118933: DOM Performance Issues | jst | |   | |
| DHTML Improvements | 64516: 95-99% CPU usage for dhtml "snow effect" | attinasi | |   |
| 70156: Some dhtml animations run slowly in mozilla | attinasi | |   | |
| 12761: JS animation degrades as more elements are animated | waterson | |   | |
| 40988: incredibly slow Javascript/DOM performance | waterson | |   | |
| 65509: Very slow javascript pulldown menu | attinasi | |   | |
| 70100: Horizontal Rule in motion via DHTML eats CPU | waterson | |   | |
| 75121: inefficient incremental reflow targeted at absolutely positioned block frames | waterson | future |   | |
| 82924: Javascript menus function very slow | jst | future |   | |
| 83088: DHTML Animated Menus Performance Sluggish | jst | future |   | |
| 84891: slow performance when changing items in drop down box | jst | 1.0 |   | |
| 87808: DHTML performance is bad; increasingly degrades with distance from affected object | | future |   | |
| 95007: Page causes long pauses/lockups in browser | jst |   |   | |
| 97287: Very poor DHTML performance on dynamic menus | | 1.0 |   | |
| 104593: Poor DHTML animation performance at www.sony.com | jst |   |   | |
| 106796: Improve GetNameSpaceID() performance | heikki | |   | |
| | hyatt | WORKSFORME |   | |
| | karnaze | WORKSFORME |   | |
| 87165: DHTML: javascript is very slow for this exmple | jst |   | investigate | |
| 110246: [DHTML] poor animation at 100% CPU | jst |   |   | |
| 117436: Steady perf regression in DHTML since 0.9.5 | jst |   |   | |
| 117611: [META] JS Engine Performance Issues | pschwartau |   |   | |
| 118933: DOM Performance Issues | jst | 1.0 |   | |
| 124178: Hang on DHTML [reflow/painting] | kmcclusk | future |   | |
| 124683: Make regions be pure C++ objects | kmcclusk | future |   | |
| 124685: All time in nsViewManager::UpdateView spent in UpdateCoveringWidgets | roc+moz |   |   | |
| 125025: JavaScript-Performance is very slow compared to IE | jst |   |   | |
| Future Improvements | Page Transitioning Improvements 61684 99% CPU utilization and general freezing when viewing a URL 61985 Mozilla uses lots of CPU during "sending request to..." 62203 Mozilla hangs for a few seconds when accessing web page | waterson | 1.0.1 |   |
| 83732: interruptible reflow | waterson | future |   | |
| Tasks | Bugs | Owners | Delivery Milestone | Estimated Improvements |
|---|---|---|---|---|
| Chrome Simplification | | hewitt | | 10% window open (189ms), 65ms on startup, 30ms on page-load |
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hweitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| | hewitt | | ||
| General Improvements | 77999: cache rule processors for XUL, scoped and UA stylesheets | hyatt | | 5-6% |
| | hyatt | | some improvements in bring up window with new XBL, such as pref panel | |
| | pchen | |   | |
| 104127: Closing windows is slow in RDF | shaver |   |   should we fix this? | |
| 69143: nsStyleUtil::FindNonTransparentBackground 7% of window paint time | pierre | |   | |
| 104176: fast refresh on window close | hyatt | |   | |
| 105333: cache a browser window on close (hide instead) to make next browser window fast | hyatt | |   | |
| | hyatt | | 2-3% | |
| 104989: improve 2nd compose window time by hiding compose window on send, and re-showing it after clearing, subject, etc | sspitzer | | not turned on by default, waiting for 109081 [0.9.8] | |
| Window Close Performance on Linux | 28639: clicking window-close "X": response time 10 sec. with 25 windows open | waterson | |   |
| 39742: file|quit takes a huge amount of time | jst | future |   | |
| | jst | |   | |
| Tasks | Bugs | Owners | Delivery Milestone | Estimated Improvements |
|---|---|---|---|---|
| General Improvements | | waterson | | cuts 10% off window close! |
| | blakeross | |   | |
| | blakeross | |   | |
| | tingley | |   | |
| 77051: Linux popup menus painfully slow (too many calls to XGrabPointer and XGetGeometry) | blizzard | |   | |
| | bryner | |   | |
| 69185: Impl outliner-based directory viewer for ftp:, file:, etc. | bbaetz | |   | |
| | bienvenu | |   | |
| | bryner | | 5% linux | |
| 38486: Back/Forward: [FEATURE] Keep DOM and JS context in memory to provide fast access when clicking back | jst | future |   | |
| 80561: dragging splitters too slow on linux | evughan | future |   | |
| 83205: Typing speed in autocomplete text field is unacceptably slow | hewitt | future |   | |
| | akkana | |   | |
| 80805: Composer should use new find component; remove old one from build (Find with WrapAround selected is very very slow) | akkana | |   | |
| 57259: Rewrite HTML form controls using XBL (XBL form controls) | bryner | |   | |
| 112758: View Saved Data > URL Specific takes about 2 minutes | morse | |   | |
| Mail Improvements | | ducarroz | | user_pref("mail.compose.max_recycled_windows", 1); footprint impact? depends on bug 109081 [0.9.8] [windows only] some times the cached compose window pops up, with previous subject |
| | naving | |   | |
| : investigate reply speed, after 104989 lands | ducarroz |   |   | |
| : fix first compose window speed, after 104989 lands | ducarroz |   |   | |
| : investigate fcc2 menu (should be done lazily) | varada |   |   | |
| | hewitt | | [XUL Syntax] Implement listbox | |
| | sspitzer | | minimal | |
| | sspitzer | |   | |
| : reduce composer toolbar updating even more, if we can focusedElement wasn't null when editor has focus (or figure something else) | sspitzer |   |   | |
| 108393: use setTimeout() to improve tabbing from address to address, address to subject, subject to body | sspitzer |   |   | |
| | cavin | |   | |
| 22960: Improve message display performance | mscott | |   | |
| : investigate folder loading | cavin,naving,bienvenu |   |   | |
| : investigate mork | bienvenu |   |   | |
| : investigate footprint (where's the memory going?) | naving,bienvenu |   |   | |
| : investigate leaks | bienvenu |   |   | |
| 107481: Opening folder: Doing UpdateCommands("mail-toolbar") several times | sspitzer | |   | |
| | naving | |   | |
| 109107: investigate and improve nsAbCollecter::CollectAddress() perf | mscott | |   | |
| | naving | |   | |
| | pavlov | |   | |
| 104905: increase nsXULAttributeValue::kMaxAtomValueLength or force atom more in nsXULAttributeValue::SetValue() | sspitzer |   |   | |
| 103451: sorting performance: need GetSortKeyLen() and CreateRawSortKey() that take const PRUnichar * to avoid copying | naving | |   | |
| 26455: Mail startup time is slow | cavin | |   | |
| | sspitzer | |   | |
| : nvestigate how expensive our folder datasource usage is in the folder pane | sspitzer |   |   | |
| : investigate our account manager datasource & folder datasource based XUL template generated content (get messages, copy, file, move). should all be done lazily. | sspitzer |   |   | |
| : investigate other XUL template generated content (charset menu, tasks, etc). should all be done lazily | varada |   |   | |
| : investigate a simpler skin (does modern's complexity and polish slow us down?) | varada,sspitzer |   |   | |
| | bienvenu | |   | |
| : switch it so that we display the contents of the imap folder before we connect to the server and do folder discovery and download headers. (though you can't load a message until we've finished all that. we might want to investigate doing folder discovery on a different thread, though it could cause problems) | bienvenu |   |   | |
| 108584: switch to using PRPackedBool | sspitzer | |   | |
| | sspitzer | |   | |
| | sspitzer | |   | |
| : ab: switch to rdf line for addressbook / mailing list pane (like we do in the folder pane) | sspitzer |   |   | |
| : ab: clean up directory and card datasources | sspitzer |   |   | |
| | sspitzer | |   | |
| : cache edit / new card window, like in 104989 | sspitzer |   |   | |
| 104988 increase string bundle cache, break apart our string bundles (especially compose, move the errors out from the main compose bundle), make sure the string bundle cache is big enough that we aren't swapping out bundles, or make callers hold onto bundles where possible. | sspitzer |   |   | |
| | sspitzer | |   | |
| | varada, stephend, mcafee | |   | |
| 78787: add better logging so that stephend can automate more of his timings | varada, stephend |   |   | |
| Slow scrolling bugs | 60371: [linux] slow scrolling of the text field using mouse | kin | 1.0.1 |   |