Looking For

Performance Project Plan and Tasks

by Cathleen Wang


Areas of Focus
  1. Memory Footprint
    • XUL Element footprint
    • general Layout footprint
    • DeCOMtamination
    • Other general improvements
  2. Start-up
    • Fastload
    • Delay loading resources
    • Reduce the number of memory allocation on startup
    • Architectual improvements
    • DeCOMtamination
    • Code Cleanup
    • Perception improvements
    • Other
  3. Page Loading
    • DeCOMtamination
    • Network Lib improvements
    • Image Lib Optimizations
    • View Positioning Improvements
    • String Optimizations
    • General Improvements
    • Future
    • DHTML
  4. New Window
    • General Improvements
      • Cache Rule Processors for XUL
      • Eliminate nsIRuleNode (DeCOMify)
      • XBL Footprint
      • Recude Popup Listeners
    • Window Close Performance on linux
  5. Application Responsiveness
    • General App Improvements
    • Mail Improvements (see doc also)
    • Slow Scrolling bugs...
New Tinderbox Monitoring tools
  • page load timing
  • startup timing
  • new window timing
  • footprint
New Addition to Tree Rule:
  • 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
26104: move broadcaster maintenance into nsXULDocument waterson 0.9.6 FIXED 1%
45353: nsXULAttribute::gFreeList is leaked waterson 0.9.7 FIXED  
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  
68871: Permit partial sharing of XUL attributes waterson 0.9.6 FIXED 5%
69996: refactor redundancies between XUL and XML/HTML waterson 1.0 future  
55801: Null XUL DOM Methods unimplemented waterson 1.0.1  
74023: XUL and XBL should share the event handler map waterson future minimal
80147: [XBL] Use XUL prototype elements for all XUL elements in an XBL document hyatt 0.9.6 FIXED 1%
104401: eliminate mOuter aggregate from nsXULElement hewitt 0.9.8 FIXED 0.5%
104402: eliminate nsIChromeEventHandler interface from XUL element waterson 0.9.8 future 0.5%
104406: stop using |id| attribute to identify elements for XUL template builder waterson 0.9.8 future 1%
105063: remove mContentID field from nsXULElement waterson 0.9.6 FIXED  
105065: move mListenerManager from XUL element into slots waterson 0.9.6 WONTFIX net loss, won't fix
105068: move nsXULElement::mLazyState to slots waterson 0.9.9 FIXED  
105071: nsXULElement should use nsCheapVoidArray for its children waterson 0.9.6 FIXED  
General Layout
Footprint Issues
17027: Eliminate dead code from layout to reduce footprint kmcclusk 0.9.9 1.0.1 future  
77585: nsTextNode should implement AppendData() jst 1.0 FIXED  
91036: SizeOf and List methods should be |#ifdef DEBUG| dbaron 0.9.6 FIXED  
92618: int -> roman number code in two places harishd 0.9.8 FIXED  
105927: create debug flag to examine heap allocation of pres shell waterson 0.9.8 FIXED  
DeCOMtamination 153215: Kill internal use of nsIMemory? (calls to nsMemory::* go through too much indirection) dougt 0.9.8 0.9.9 1.0.1 future minimal
92141: spend too much time refcounting atoms dbaron 0.9.6 FIXED 2-3%
92144: investigate inlining of nsCOMPtr methods dbaron 0.9.8 0.9.9 future <2%
96108: Make nsVoidArray::ElementAt() inline (plus a few others) rjesup 0.9.7 FIXED  
102453: nsSpaceManager doesn't need an XPCOM interface dbaron 0.9.6 FIXED <1%
104336: Eliminate nsIRuleNode, nsIRuleWalker, inline nsIFrame funcs hyatt 0.9.6 FIXED 5%
104346: need |nsRefPtr| dbaron 0.9.8 0.9.9 1.1 future dependency bug
116551: De-COMtaminate nsINodeInfo jst 0.9.8 FIXED 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 0.9.6 1.0.1 1.1 FIXED fixed by 87370
56940: O(n**2) and O(n**3) growth too easy with JS string concat brendan 0.9.6 FIXED  
62164: JS scopes are malloc-happy; need JS_DOUBLE_HASHING brendan 0.9.8 0.9.9 FIXED  
73382: Cleanup view manager code roc+moz@cs.cmu.edu 1.0 FIXED  
76329: nsComponentManager uses too much memory for registry dveditz 0.9.7 FIXED 500K
104999: Avoid keeping redudant image data in memory pavlov 0.9.8 0.9.9 FIXED  
121015: New server side image scaling code for gtk tor@acm.org / nisheeth 0.9.9 FIXED  
106153: XBL footprint: throw away XML elements in XBL hyatt 0.9.7 FIXED 6% footprint, some startup improvements
109963: improve XBL string usage dbaron 0.9.8 0.9.9 future  
106161: merge Content and Layout libraries dbaron dp 1.0  
102706: change nsFontMetricsWin.cpp to use nsCompressedCharMap shanjian 0.9.6 FIXED 8 charmap: 54K downto 12K
58 charmap: 464K downto 69k
108597: shrink nsStr alecf 0.9.6 FIXED cut 4 bytes per nsStr
109157: footprint of nsZipArchive::BuildFileList blythe 0.9.7 FIXED  
110169: footprint: nsDNSLookup objects cost 1104 bytes each gordon 0.9.8 1.0  
109218: js_SetupLocks appears excessive brendan 0.9.7 FIXED 85120B downto 3200B
112708: preferences is malloc-happy alecf 0.9.8 FIXED  
113354: mork memory growth when accessing global history bienvenu 0.9.8 FIXED  
113158: wallet tables take up 200K of memory morse 0.9.8 FIXED  
107270: reduce size of CSSDeclaration and things it owns (nsCSSMargin, etc.) blythe 0.9.8 FIXED -22% footprint on CSS declaration, 61,744 bytes on startup.
110163: footprint: 135236 btyes allocated by disk cache on startup gordon 0.9.9 1.0  
117316: repeated attribute changes lead to infinite rule tree growth dbaron    
120718: XPCReadableJSStringWrapper is too malloc happy. jst 0.9.9 FIXED  
115973: 1MB churned by nsXPCWrappedJSClass::CallMethod brendan 0.9.8 0.9.9 1.0.2  
116023: 1MB memory churned by nsParser::OnDataAvailable() calls ParserWriteFunc dp 0.9.9  
123728: periodically HeapMinimize dp 0.9.9 FIXED windows only
123729: try SetProcessWorkingSetSize to trim working set size dp 0.9.9 FIXED windows only





Tasks Bugs Owners Delivery Milestone Estimated Improvements
Fastload 68045: fastload JS
brendan 0.9.6 FIXED 5%
94199: fastload XBL methods and properties (hyatt) hyatt 0.9.8 1.2 3%
112064: Fastload XUL documents and elements ben 0.9.8 1.0 FIXED  
91242: CSS parsing is 5.5% of startup time (pierre) dbaron 0.9.7 future 1%
110908: fastload pref files (4.1% startup) bnesse 1.0 depends on bug 98533
98533: Remove JS from prefs backend bnesse 0.9.9 1.0  
Delay Loading
Resources
101769: Stop loading plugins on startup dp 0.9.6 FIXED 0.5% depends on number of plugins
75947: Security DLLs are now loaded at startup, hurting startup time ddrinan 2.2 FIXED 5%
14824: [Startup Performance] Defer loading bookmarks until UI has finished loading pchen 0.9.7 FIXED  
63000: Bookmarks should load asynchronously ben 1.0.1  
76944: Lazy loading of string bundles alecf 0.9.6 FIXED 0.5%
64146: Delay nsCharsetMenu initialization to avoid consuming ~2% of startup time jbetak 0.9.6 FIXED 2%
97171: startup perf- remove the need of loading of langGroups.properties files at startup time to speed up startup performance jbetak 0.9.6 FIXED  
97173: startup perf- remove the need of loading of unixcharset.properties files at startup time to speed up shanjian 0.9.8 FIXED  
97174: startup perf- remove the need of loading of wincharset.properties files at startup time to speed up jbetak 0.9.6 FIXED 0.5%
97175: startup perf- remove the need of loading of charsetalias.properties files at startup jbetak 0.9.6 FIXED 0.5%
97176: startup perf- remove the need of loading of langGroups.properties files at startup time to speed up startup performance jbetak 0.9.6 FIXED 0.5%
97172: startup perf- remove the need of loading of maccharset.properties files at startup time to speed up nhotta 0.9.6 FIXED  
96529: delay loading of unicharutil in nsString case conversion code ftang 0.9.6 FIXED  
96530delay loading of unicharutil in nsTextTransformer::Initialize ftang 0.9.6 FIXED 0.5%
34242: X font lookups on -*-*-*-*-*-*-*-*-*-*-*-*-*-* shanjian 0.9.7 FIXED  
96525: delay loading of strres dll in nsProfile.cpp ccarlen 0.9.8 FIXED  
38621: Defer loading of history related dlls till after the browser window shows up jaggernaut 0.9.8 1.0.1 WONTFIX  
97462: Delay cookie dll initialization even further darin FIXED fixed by 89488
Reduce Number of
Memory Allocations
at startup
62164: JS scopes are malloc-happy; need JS_DOUBLE_HASHING brendan 0.9.8 0.9.9 FIXED  
48888: optimize xpcom component registry shaver dougt 0.9.7 1.1 FIXED 3-4% Ts
106356: reduce the number of memory allocation in CSS parser dbaron 0.9.8 future 2%
106357: reduce number of memory allocation in XML parser heikki 0.9.7 0.9.9 future 3%
108071: PlatformPrePopulateRegistry does 6282 allocations dp 0.9.7 FIXED  
string sharing scc & jag 0.9.7  
Architectual Improvements 103916: nsStdURL::GetSpec() is 2.6% of main1()
105040: nsStdURL::SetSpec is 1% of startup
darin 0.9.7 FIXED 2%
93055: support partial reads from OnDataAvailable events darin 0.9.7 0.9.9 1.0 future  
103912: nsChromeRegistry::LoadInstallDataSource() is 2.5% of main1() hyatt 0.9.8 1.0 FIXED 2%
104957: nsParser::Tokenize takes 8% of startup dp 0.9.8 FIXED 1%
26291: string bundle shouldn't be using using OpenInputStream(), block UI thread alecf 0.9.8 1.1 future  
106161: Merge Content and Layout libraries dbaron dp 1.0 2.5%
101838: NSPR: overall slower performance after nspr checkin [see bug 71718] sfraser 0.9.8 0.9.9 WONTFIX  
106999: Implement native atomic operations on Mac OS 9/Mac OS X sfraser 0.9.7 FIXED  
109207: the dtd handler take 3% of start up time heikki future  
98533: Remove JS from prefs backend bnesse 0.9.9 1.0  
DeCOMtamination 153215: Kill internal use of nsIMemory? (calls to nsMemory::* go through too much indirection) dougt 0.9.8 0.9.9 1.0.1 future minimal
92141: spend too much time refcounting atoms dbaron 0.9.6 FIXED 2-3%
92144: investigate inlining of nsCOMPtr methods dbaron 0.9.8 0.9.9 future <2%
96108: Make nsVoidArray::ElementAt() inline (plus a few others) rjesup 0.9.7 FIXED  
102453: nsSpaceManager doesn't need an XPCOM interface dbaron 0.9.6 FIXED <1%
104336: Eliminate nsIRuleNode, nsIRuleWalker, inline nsIFrame funcs hyatt 0.9.6 FIXED 5%
104346: need |nsRefPtr| dbaron 0.9.8 0.9.9 1.1 future dependency bug
116551: De-COMtaminate nsINodeInfo jst 0.9.8 FIXED pageload 1240ms->1224ms,
xul 1583ms->1565ms,
startup 6278ms->6238ms
Code Cleanups 104962: 3 calls to GetWndowsFolder costs 3% of startup dougt 0.9.6 FIXED 3%
105042: PR_sscanf() is 1% of startup jband 0.9.6 FIXED 1%
96461: ComponentManager could PLHash or PLDHash
neeti 0.9.6 FIXED minimal
13009: service manager has too many locks neeti 0.9.8 FIXED  
100828: nsLocalFileMac has serious problems ccarlen 0.9.8 FIXED  
112312: JAR uses 32K buffer, affecting startup time dp 0.9.7 FIXED 10%
112308: 2M history.dat file adds 30% to startup time on openwound blakeross 1.0 1.1 FIXED  
Perception Improvements 66898: Active Splash screen on all platforms sfraser 0.9.8 1.0 1.2  
75599: [META] Turbo mode tracking bug
  • Fix multi-profile support
    • Correctly log off from mail accounts
      100385: ccarlen racham@netscape.com, [0.9.8] [1.0]
    • Correctly clear out any security data (saved passwords, PSM)
      86067: ccarlen@netscape.com, [0.9.6] WORKSFORME
      101263: pchen@netscape.com, [0.9.7] FIXED
    • Other bugs related to multi-profile support
      99117: ccarlen@netscape.com, [0.9.8] [0.9.9]
      98736: bnesse@netscape.com, [0.9.7] FIXED
  • Mozilla hangs when shutting down windows
    100319: law@netscape.com, 0.9.7 [1.0]
  • Turbo and new mail notification should use the same tray icon
    97326: pchen mscott@netscape.com, [0.9.8] [1.0.1] WONTFIX
  • [FEATURE] Windows integration for new mail notification
    18729 (dependency): sspitzer mscott@netscape.com, [0.9.7] [0.9.9]
  • Need confirmation dialog when "Disable QuickLaunch" systray icon menu choice is selected
    98805: blaker@netscape.com, [0.9.8] FIXED
ccarlen, pchen, law, bnesse, blakeross 1.0 FIXED  
109188: investigate early main window creation 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 0.9.7 0.9.9 2%
65845: incorporate code coverage info into link process dveditz 0.9.8  
45008: Optimize Color Depth of GIFs in Chrome marlon 0.9.8 1.0  
113739: refactor chrome archives so less is loaded at startup dveditz 0.9.8 0.9.9 1.2  
115973: 1MB churned by nsXPCWrappedJSClass::CallMethod brendan 0.9.8 0.9.9 1.0.2  
46707: investigate xpt file loading performance/caching dveditz 1.0 1.2  
Regressions 110340: Launch result numbers up across all platforms jaggernaut WONTFIX  
116483: 2-4% spike in startup time cleaning up dist pavlov 0.9.8 1.0 WONTFIX  





Tasks Bugs Owners Delivery Milestone Estimated Improvements
DeCOMtamination 153215: Kill internal use of nsIMemory? (calls to nsMemory::* go through too much indirection) dougt 0.9.8 0.9.9 1.0.1 future minimal
92141: spend too much time refcounting atoms dbaron 0.9.6 FIXED 2-3%
92144: investigate inlining of nsCOMPtr methods dbaron 0.9.8 0.9.9 future <2%
96108: Make nsVoidArray::ElementAt() inline (plus a few others) rjesup 0.9.7 FIXED 1.5%, 0.5%
102453: nsSpaceManager doesn't need an XPCOM interface dbaron 0.9.6 FIXED <1%
104336: Eliminate nsIRuleNode, nsIRuleWalker, inline nsIFrame funcs hyatt 0.9.6 FIXED 5%
104346: need |nsRefPtr| dbaron 0.9.8 0.9.9 1.1 future dependency bug
116551: De-COMtaminate nsINodeInfo jst 0.9.8 FIXED pageload 1240ms->1224ms,
xul 1583ms->1565ms,
startup 6278ms->6238ms
Network Lib
Improvements
93054: implement HTTP/1.1 pipelining darin 0.9.9 1.0.1 FIXED  
34402: Need adjustable buffer sizes in nsSocketTransport darin 0.9.8 future  
83526: http should use fewer connections per server per page darin 0.9.5 FIXED  
93055: support partial reads from OnDataAvailable events darin 0.9.7 0.9.9 1.0 future  
103745: evaluate performance of mozilla cookies implementation darin 0.9.8 future  
103864: optimize NS_OUTPUT_STREAM_BUFFER_SIZE (in nsFileStreams.cpp) darin 0.9.7 0.9.9 future  
101857: support creating cache entry with no data gordon 0.9.6 FIXED  
77458: [mac] Cache is flakey, a lot of the time slower gordon 0.9.8 1.0  
81724: disk cache needs stream wrappers (disk cache level 3) gordon 0.9.8 1.0 4-5%
Image Lib
Optimization
104999: Avoid keeping redudant image data in memory pavlov 0.9.8 0.9.9 FIXED  
121015: New server side image scaling code for gtk tor@acm.org / nisheeth 0.9.9 FIXED  
78611: Timers need to be made threadsafe pavlov 0.9.8 FIXED  
105000: investigate img decompression on the fly pavlov 0.9.8 WONTFIX  
78300: Make imglib process data on a seperate thread pavlov 0.9.8 1.0 1.1  
103432: (more) images fetched from server when they should be in the cache pavlov 0.9.8 FIXED  
100250: Large images causes machine to lock up pavlov 0.9.8 1.0  
71857: Massive multiple refetch of images on auto-refresh pavlov 0.9.8 FIXED  
96633: slow display of background image pavlov 0.9.8 1.0  
78019: Some images loaded from server, but they should be in cache pavlov 1.0  
125025: Animated gifs use large amounts of CPU when not visible rjesup@wgate.com 0.9.9 FIXED  
Layout
Improvements
51945: Mozilla hangs for extended periods while loading complex webpage. evaughan 0.9.7 WORKSFORME  
95952: Waste of offscreen pixmaps kmcclusk 0.9.7 FIXED  
69010: nsRenderingContext::FillRect is waaaaay slow because we paint too much dcone 0.9.8 1.1  
34887: Need to optimize painting of overlapping opaque frames kmcclusk 0.9.8 future  
100622: The browser repaints the screen excessively when loading this page attinasi 0.9.8 WORKSFORME  
75106: Possible performance improvement in rendering iframes under Linux evaughan 0.9.8  
99924: Webpage brings Mozilla to its knees kmcclusk 0.9.8  
98012: Browser hangs while loading page [Layout reflow issue] rods 0.9.8 WORKSFORME  
107064: large thread refuses to display attinasi 0.9.9 1.2  
104856: Almost blank page attinasi 0.9.9 FIXED  
74775: GetTextExtentPoint32A called three times as often as necessary attinasi 0.9.8 1.0.1 future  
Long Page
Problems
77938: investigate nsTextFrame::ComputeWordFragmentWidth() implementation waterson 0.9.7 future  
77941: nsLookAndFeel::GetColor() inefficient bryner 0.9.6 FIXED small
77945: excessive invalidation in nsTextFrame::Reflow() waterson 0.9.7 future  ?
77948: improve nsHTMLReflowState's ctor bryner 0.9.8 future  
103266: [FIX]Many useless calls to Invalidate() in nsTextFrame attinasi 0.9.6 FIXED benefit long text doc
77956: nsPresContext::ProbePseudoStyleContextFor() waterson 0.9.7 future   investigate
99691: nsBoxToBlockAdaptor should not be creating a space manager waterson 0.9.9 FIXED minimal
86947: make vertical margins not require state recovery dbaron 0.9.6 FIXED 0-33%
109428: PresShell::ContentAppended calls GPFF on every frame that it added dbaron 0.9.8 FIXED 0-70% (on pages w/ flat long content tree)
86950: make floats not require state recovery dbaron 0.9.8 future  
90725: Don't allocate space managers that won't be used dbaron 0.9.8 future  
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 86947 lands
42412: Large page redraws/reflows far too often waterson 0.9.7 future re-evaluate
57451: Extreme slowness when loading long pages of text from disk waterson 0.9.7 future re-evaluate
97815: Font statement is causing performance problems harishd 0.9.8 1.1  
57209: Rewrite HTML form controls using XBL (XBL form controls) bryner 0.9.8 1.0  
View Positioning
Improvements
97934: NS_FRAME_SYNC_FRAME_AND_VIEW bit is write-only dbaron 0.9.8 future minimal
100585: don't position views during first-pass reflow waterson 0.9.8 future 2%
100590: analyze/optimize block frame's post-reflow line and frame placement waterson 0.9.7 future  
String
Optimization
77460 buglists hang mozilla for long periods of time using all available CPU rjc 0.9.8 0.9.9 FIXED  
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 0.9.8 0.9.9 effort to get rid of nsStr
General
Improvements
97805: fix contains Event Prioritization problems on win32 hyatt 0.9.6 FIXED 5% (win32)
41119: nsFrameManager destructor is slow bryner 0.9.7 FIXED  
91956: nsFontCache destroyed whenever a webshell is released bryner 0.9.8?  
100588: block code should be more conservative about reflowing children waterson 0.9.7 future  
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 0.9.8 0.9.9 1.0.1  
54542: Large tables are slow dbaron 1.0 1.0.1  
84466: Page takes > 60s to render; many list elements are missing attinasi 0.9.9 1.1  
108232: slowdown with form-state-in-content changes jst 0.9.6 FIXED regression
109415: investigate default memory cache size tever 0.9.8  
105344: Memory cache pref should be a percentage of physical RAM gordon 0.9.8 0.9.9  
57209: Rewrite HTML form controls using XBL (XBL form controls) bryner 0.9.8 1.0  
112525: O(n^2) when dispatching events in nsView :: HandleEvent kmcclusk 0.9.7 FIXED  
77989: javascript-generated and data: documents wait 1.2s before painting heikki nisheeth 0.9.8 0.9.9 1.0  
118933: DOM Performance Issues jst 0.9.9 1.0  
DHTML
Improvements
64516: 95-99% CPU usage for dhtml "snow effect" attinasi 0.9.8 1.1  
70156: Some dhtml animations run slowly in mozilla attinasi 0.9.9 1.1  
12761: JS animation degrades as more elements are animated waterson 0.9.2 future  
40988: incredibly slow Javascript/DOM performance waterson 1.0 future  
65509: Very slow javascript pulldown menu attinasi 1.0.1 future  
70100: Horizontal Rule in motion via DHTML eats CPU waterson 1.0.1 FIXED  
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 joki waterson future  
95007: Page causes long pauses/lockups in browser jst    
97287: Very poor DHTML performance on dynamic menus waterson nisheeth 1.0  
104593: Poor DHTML animation performance at www.sony.com jst    
106796: Improve GetNameSpaceID() performance heikki 0.9.7 future  
109425: DHTML pegs CPU hyatt WORKSFORME  
97938: Scrolling sony.com search results page is painfully slow 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 113024: simplify modern theme for performance hewitt 0.9.8 FIXED 10% window open (189ms), 65ms on startup, 30ms on page-load
113039: [modern] simplify primary toolbar xbl and css hewitt 0.9.7 FIXED
113041: [modern] simplify sidebar tab xbl and css hewitt 0.9.8 FIXED
113043: use multi-level borders to simplify multi-slice xbl in themes hewitt 0.9.8 FIXED
113585: convert modern theme to use -moz-image-region hewitt 0.9.8 FIXED
113586: convert classic theme to use -moz-image-region hewitt 0.9.8 FIXED
115943: Vertical scrollbar is lost on theme switch hewitt 0.9.8 FIXED
113643: Modern: Printer icon is on left side of URL field hewitt 0.9.8 FIXED
114475: primary toolbar button/icon appears in the wrong order on first window hewitt 0.9.8 FIXED
99787: The border of the modern theme's url field is not redrawn. hewitt 0.9.8 FIXED
110214: some stylesheets imported multiple times hewitt 0.9.8 FIXED
113977: 32 redundant bloat images in windows classic skin hweitt 0.9.8 FIXED
113966: toolbar-bg.(png|gif) : there can be only one! hewitt 0.9.8 FIXED
114802: Tab control misdrawn with Windows's "Rainy Day" in classic hewitt 0.9.8 FIXED
64894: Tooltips blend into window on Linux hewitt 0.9.8 FIXED
90724: [classic] Mac images not overwriting xp ones hewitt 0.9.8 FIXED
103173: Mac Classic: Table Properties window alingment and caption choices shif the contents hewitt 0.9.8 FIXED
103199: Mac Classic: Bullet indicators run too close to borders of menus hewitt 0.9.8 FIXED
103298: Mac Classic: Horizontal line properties - choosing different width types causes window to resize hewitt 0.9.8 FIXED
110442: cursor is wrong is over normal text hewitt 0.9.8 FIXED
111472: Menubar/main menu color wrong in XP hewitt 0.9.8 FIXED
111989: arrows mising on scrolling menupopups hewitt 0.9.8 FIXED
113027: menu icon size CSS rule problem (checkmark, bullet) hewitt 0.9.8 FIXED
109180: First icon in classic doesn't render correctly hewitt 0.9.8 FIXED
109204: Option menu buttons have malformed top right corner hewitt 0.9.8 FIXED
81581: Preferences panel header should use system font and background hewitt 0.9.8 FIXED
81903: Cancel button clipped on the right side hewitt 0.9.8 FIXED
103324: Mac Classic: Width and height values for image constrain size is not greyed out hewitt 0.9.8 FIXED
110108: If appropriate, remove bad spinbuttons from Modern theme hewitt 0.9.8 FIXED
115403: check for sizetopopup in nsMenuPopupFrame, not msMenuFrame hewitt 0.9.8 FIXED
116198: remove progressbar tag to simplify progressmeter hewitt 0.9.8 FIXED
86569: align="start" should be added to checkboxes hewitt 0.9.8 FIXED
General Improvements 77999: cache rule processors for XUL, scoped and UA stylesheets hyatt 0.9.8 1.2 5-6%
106153: XBL footprint: throw away XML elements in XBL hyatt 0.9.6 FIXED some improvements in bring up window with new XBL, such as pref panel
80208: creating too many popup listeners? pchen 0.9.6 FIXED  
104127: Closing windows is slow in RDF shaver     should we fix this?
69143: nsStyleUtil::FindNonTransparentBackground 7% of window paint time pierre 1.0 future  
104176: fast refresh on window close hyatt 0.9.8 1.2  
105333: cache a browser window on close (hide instead) to make next browser window fast hyatt 0.9.8 1.2  
104336: eliminate nsIRuleNode (DeComify) hyatt 0.9.6 FIXED 2-3%
104989: improve 2nd compose window time by hiding compose window on send, and re-showing it after clearing, subject, etc sspitzer 0.9.7 FIXED 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 1.0 future  
39742: file|quit takes a huge amount of time jst future  
42321: javascript GC forced on window/document create/destroy jst 0.9.7 FIXED  





Tasks Bugs Owners Delivery Milestone Estimated Improvements
General Improvements 104328: "Add Bookmark" performance poor with many bookmarks waterson 0.9.6 FIXED cuts 10% off window close!
52149: scrolling bookmark tree is absolutely slow blakeross 0.9.7 FIXED  
73508: bookmarks tree widget need to be converted to rdfliner blakeross 0.9.7 FIXED  
105783: [building bookmark menu] Make nsXULSortService greasy fast tingley 0.9.7 FIXED  
77051: Linux popup menus painfully slow (too many calls to XGrabPointer and XGetGeometry) blizzard 0.9.8 0.9.9  
82854: FilePicker: Loading a directory with large number of files is very slow bryner 0.9.7 FIXED  
69185: Impl outliner-based directory viewer for ftp:, file:, etc. bbaetz 0.9.9 1.0.1  
104243 : Local Search needs to do more than one header per time slice bienvenu 0.9.6 FIXED  
97895: Back/Forward: Old page gets repainted when leaving a page bryner 0.9.6 FIXED 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  
97157: Find in page with a "pre" tag is very very slow akkana 0.9.8 0.9.9 FIXED  
80805: Composer should use new find component; remove old one from build (Find with WrapAround selected is very very slow) akkana 0.9.8 1.0  
57259: Rewrite HTML form controls using XBL (XBL form controls) bryner 0.9.8 1.0  
112758: View Saved Data > URL Specific takes about 2 minutes morse 0.9.9 1.0.1  
Mail
Improvements
104989: improve 2nd compose window time by hiding compose window on send, and re-showing it after clearing, subject, etc ducarroz 0.9.7 FIXED 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
85029: searching large mail folders is incredibly slow naving 0.9.6 FIXED  
: investigate reply speed, after 104989 lands ducarroz    
: fix first compose window speed, after 104989 lands ducarroz    
: investigate fcc2 menu (should be done lazily) varada    
70858: switch from tree to listbox in the addressing widget hewitt 0.9.8 FIXED [XUL Syntax] Implement listbox
98657: remove "composeSaveMenuItems" command set from messengercompose.xul sspitzer 0.9.6 FIXED minimal
108038: mprove compose perf (and reply perf) by updating the commands less sspitzer 0.9.6 FIXED  
: 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    
101480: when replying to an IMAP message, fetch by part (so we only get the body, not the attachments) cavin 0.9.6 FIXED  
22960: Improve message display performance mscott 0.9.8 1.2  
: 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 0.9.7 future  
104610: Using 'n' and advancing to next folder is unbearably slow naving 0.9.8 FIXED  
109107: investigate and improve nsAbCollecter::CollectAddress() perf mscott 0.9.8 future  
104676: Local folder mail viewing of a large mailbox is too slow naving 0.9.7 FIXED  
106817: many threads being created and destroyed when in menupop with icons pavlov 0.9.7 0.9.9 WORKSFORME  
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 0.9.7 future  
26455: Mail startup time is slow cavin 0.9.8 1.2  
103010: make news servers closed on startup, don't do any NNTP on startup. sspitzer 0.9.6 FIXED  
: 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    
100802: investigate time to delete message and load next message since that's such a common operation (toolbar flashing on delete, selection goes from 0 to 1 to 0) [improvements made] bienvenu 0.9.6 FIXED  
: 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 0.9.7 1.0.1  
107151: ab: investigate performance sspitzer 0.9.8 FIXED  
73868: ab: switch to pure outliner (not rdfliner) implement a nsIOutlinerView like we do in nsMsgDBView for the results pane, and ab sidebar sspitzer 0.9.8 FIXED  
: 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    
105835: ab: clean up addressPane.css . sspitzer 0.9.6 FIXED  
: 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    
80897: batching for multiple msg delete, marking as read, etc sspitzer 0.9.8 FIXED  
108577: automate leak / bloat measuring, tie into tinderbox varada, stephend, mcafee 0.9.8 FIXED  
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