Closed Bug 39573 Opened 25 years ago Closed 17 years ago

[CBX]Mozilla takes 10 minutes to render a (large) table with form elements.

Categories

(Core :: Layout: Form Controls, defect, P3)

x86
All
defect

Tracking

()

RESOLVED WORKSFORME
Future

People

(Reporter: alla, Assigned: rods)

References

()

Details

(Keywords: perf, testcase)

Attachments

(7 files)

The above url is an example of the UI of a firewall rule editor. It takes 10 minutes to render on my Linux PIII 500 MHz machine, during which all mozilla windows freeze. When the page has loaded you can scroll it pretty fast though. NS 4.x loads the page quite quickly. I'm using the 2000-05-16-08-M16 nightly build.
I doubt that this is specifically a form control bug. Other tests need to be made. After 3 minutes on my Celeron 500mhz 128Meg (WinNT) home machine it had consumed 40Megs of memory (then I killed it). After looking at the source the only out of the ordinary thing I see is the table cells have valign.
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Target Milestone: --- → M17
Well, the table with all the form controls is inside another table, that is like death. I stripped it down to have just the one big table and that seemed to take about two minutes to load and was about to display when it died (I am not sure why).
Attached file no outer table in example (deleted) —
I crashes in nsWindow::CreateWindow and then crashes MSDEV
Keywords: perf
Well, my nightly build managed to render the "no outer table" attachment. But during layout i got a lot of: Warning - table cell content max element height 345 greater than desired height 330 and it took a while: Document: Done (1516.378 secs) 25 minutes!!! On a PIII 500MHz! And all windows froze during rendering. If works fairly well when the page has rendered though. I wouldn't call it fast, but it's usable.
Both the attachment and the URL crash todays *win32* build. Both die at same module/address: MOZILLA caused an invalid page fault in module GKWIDGET.DLL at 0177:60ad6446.
Interesting to note that even IE5 doesn't like this page. It smears it to the point of being completly unreadable. Saving the file locally and opening it via file:/// also crashes on win98 today, it gets the progress bar to 99% then dies. Is this critical/crash?
OS: Linux → All
pumping up the volume, since folks say this is crashing.
Severity: normal → critical
Keywords: crash
Priority: P3 → P1
proposing as nsbeta2 since it's a crasher
Keywords: nsbeta2
This isn't critical for nsbeta2 because most browsers have an issue with this page. And there are hardly any pages out on the net with 3000 comboboboxes.
Rod and I talked, and this sure looks like a dup of 39544. I agree with rod's comment here and eric krock's comment in that bug that this problem is not high priority for nsbeta2.
Keywords: nsbeta2
This bug has been marked "future" because at this time it has been determined that it is not absolutely critical for RTM (Release To Manufacturing). If the reporter and anyone else believe it is necessary to fix this before shipping Seamonkey 1.0, please describe your issue in the bug.
Target Milestone: M17 → Future
Well, It is pretty important to us. If this is not fixed before release our firewall product will become unusable with Netscape 6. Anyway. If i get some free time I'll do some profiling and see if there is some simple fix.
We have a solution, we just don't have the time to put it in. See Bug 39573. Maybe you could take another look at the page itself and see if there is some way to break it up or reorganize it so it is faster on all browsers.
See also: bug 39573 and bug 39573.
I have a page with some tables with many tablecells. This page is produced by webalizer, a tool to analyze httpd logs. It takes some time (3 minutes) to render the page on my linux debug build with a PII 400, mozilla nearly freezes. The progressbar is very slow, lots of Warning - table cell content max element height 225 greater than desired height 218 messages. See http://www.begriffslogik.de/wwwstats2/usage_200005.html as an example. I think this is a nasty performance problem, the milestone should be something else then "Future".
Andreas Otte: I don't think the page you mention has anything to do with the problem reported in this bug. This bug is about pages with hundreds of dropdown comboboxes. I don't think the page you mention shares that trait. You should submit a separate performance bug against the layout component. Thanks!
Ok. I've looked a bit at this. I find it hard to believe that the "resource" problem described in bug 39544 is the cause of this. First of all there is no "out of resources" in X, so this shouldn't happen in Linux. Second, I've done some measurments of cut down versions of the "no outer table" page. Here is the results with the 2000-06-02 nightly build: 5 rows -> 2.2 seconds 10 rows -> 3.7 seconds 20 rows -> 10.4 seconds 43 rows -> 40 seconds 86 rows -> 173 seconds 172 rows (original) -> i didn't bother, but i'll guess about 692 seconds. See the pattern? The *real* problem is that some part of layout or parsing seems to use an algorithm that is O(n^2). I've seen bug reports showing that javascript DOM appends exhibit linear performance (instead of constant), which could be related to this bug (ie. linear append for each row means O(n^2) to add n rows). On the subject of breaking up the page. I've discussed it with the product people, it's difficult, but we'll probably do it anyway. The problem doesn't go away then either though, i.e. 10 seconds for 20 lines of rules is still to slow. Btw. Why do every see bug xxx in this bug reference 39573 (this bug)?
I'll bet it has to do with pre-building all those drop-down lists. I wouldn't be surprised if core block layout was doing all kinds of unnecessary work for those lists. nsBlockFrame::RenumberList() comes to mind. We should be able to mark blocks that have restricted content, so we don't do extra work that's required for general blocks. Or, we could build a subclass that shuts off some default behaviors that are not needed. That might require factoring the code a bit more.
This should be fairly easy to spot in a profiler. Unfortunately gprof doesn't work with Mozilla, so i can't test it. I thought the profiler worked on Windows? It would be nice with some hard facts on where the time is spent.
The problem is, we layout all the dropdowns to get their appropriate size so the combobox itself knows what size to be. I have some code in it's early stages that can measure the widths of the dropdown and doesn't have to lay them out until it is time to pop them down (the easy part). This means we could do lazy instantiation of the dropdown when the user clicks on it the first time (the hard part and time consuming part of fixing this bug).
> The problem is, we layout all the dropdowns to get their appropriate size so the combobox itself knows what size to be. Should it not take O(n) with n rows of identical comboboxes if that is the main problem? It must be something more that is wrong if it takes O(n^2).
Here is a typical stack trace, obtained by interrupting mozilla while loading the "no outer table" example (PC/Linux debug build from 7/21): #0 __select () from /lib/libc.so.6 #1 __DTOR_END__ () #2 _XRead () #3 _XReply () #4 XGetWindowAttributes () #5 gdk_window_get_events () #6 nsWindow::CreateNative () #7 nsWidget::CreateWidget () #8 nsWidget::Create () #9 nsView::CreateWidget () #10 nsListControlFrame::CreateScrollingViewWidget () #11 nsScrollFrame::CreateScrollingView () #12 nsScrollFrame::Init () #13 nsListControlFrame::Init () #14 nsCSSFrameConstructor::InitAndRestoreFrame () #15 nsCSSFrameConstructor::InitializeSelectFrame () #16 nsCSSFrameConstructor::ConstructSelectFrame () #17 nsCSSFrameConstructor::ConstructFrameByTag () #18 nsCSSFrameConstructor::ConstructFrameInternal () #19 nsCSSFrameConstructor::ConstructFrame () #20 nsCSSFrameConstructor::ProcessChildren () #21 nsCSSFrameConstructor::ConstructTableCellFrame () #22 nsCSSFrameConstructor::TableProcessChild () #23 nsCSSFrameConstructor::TableProcessChildren () #24 nsCSSFrameConstructor::ConstructTableRowFrame () #25 nsCSSFrameConstructor::TableProcessChild () #26 nsCSSFrameConstructor::TableProcessChildren () #27 nsCSSFrameConstructor::ConstructTableRowGroupFrame () #28 nsCSSFrameConstructor::TableProcessChild () #29 nsCSSFrameConstructor::TableProcessChildren () #30 nsCSSFrameConstructor::ConstructTableFrame () #31 nsCSSFrameConstructor::ConstructFrameByDisplayType () #32 nsCSSFrameConstructor::ConstructFrameInternal () #33 nsCSSFrameConstructor::ConstructFrame () #34 nsCSSFrameConstructor::ProcessChildren () #35 nsCSSFrameConstructor::ConstructFrameByTag () #36 nsCSSFrameConstructor::ConstructFrameInternal () #37 nsCSSFrameConstructor::ConstructFrame () #38 nsCSSFrameConstructor::ContentAppended () #39 StyleSetImpl::ContentAppended () #40 PresShell::ContentAppended () #41 nsDocument::ContentAppended () #42 nsHTMLDocument::ContentAppended () #43 HTMLContentSink::NotifyAppend () #44 SinkContext::FlushTags () #45 SinkContext::DidAddContent () #46 SinkContext::CloseContainer () #47 HTMLContentSink::CloseContainer () #48 CNavDTD::CloseContainer () #49 CNavDTD::CloseContainersTo () #50 CNavDTD::CloseContainersTo () #51 CNavDTD::HandleEndToken () #52 CNavDTD::HandleToken () #53 CNavDTD::BuildModel () #54 nsParser::BuildModel () #55 nsParser::ResumeParse () #56 nsParser::OnDataAvailable () #57 nsDocumentOpenInfo::OnDataAvailable () #58 nsHTTPFinalListener::OnDataAvailable () #59 InterceptStreamListener::OnDataAvailable () #60 nsHTTPChunkConv::OnDataAvailable () #61 nsHTTPServerListener::OnDataAvailable () #62 nsOnDataAvailableEvent::HandleEvent () #63 nsStreamListenerEvent::HandlePLEvent () #64 PL_HandleEvent ()
Ok. I'm onto this. There are several reasons, first of all there is to much Xserver communication (waiting for a result from the server, like can be seen in the backtrace by Andreas Franke). There is also a O(n^2) algorithm in nsView::HandleEvent() (see bug 49175, where i added a patch for it). I'll continue to work on this.
Depends on: 49175
Ok, In bug 49300 I've added a patch that fixes one of the Xserver communication hotspots.
Depends on: 49300
In the current cvs tree, with the patch in bug 49175, the second patch in 49300 and this stupid hack (which breaks popup placement): Index: nsWindow.cpp =================================================================== RCS file: /cvsroot/mozilla/widget/src/gtk/nsWindow.cpp,v retrieving revision 1.291 diff -u -r1.291 nsWindow.cpp --- nsWindow.cpp 2000/08/17 03:29:06 1.291 +++ nsWindow.cpp 2000/08/18 13:25:29 @@ -2657,7 +2666,11 @@ nsRect oldrect, newrect; oldrect.x = aX; oldrect.y = aY; - mParent->WidgetToScreen(oldrect, newrect); + + // ALEX: *BAD HACK* (remove WidgetToScreen call as it costs a lot in Xserver comm) + //mParent->WidgetToScreen(oldrect, newrect); + newrect = oldrect; + gtk_widget_set_uposition(mShell, newrect.x, newrect.y); } else { gtk_widget_set_uposition(mShell, aX, aY); I can load the no outer table example from disk in 52 seconds on a PII 450 Mhz. This is a lot better than the previous 25 minutes. The main part of the time is now used by nsViewManager2::ProcessPendingUpdates() which seems a bit harder to fix. See the attached jprof profile. The reason for the stupid patch is that the placement of the popup calls gdk_window_get_origin() a lot of times which stalls the X communications a lot. This would be fixed (correctly) by doing lazy dropdown creation. It seems rods@netscape.com is working on this (see comments in 39544).
I am trying to get some traction on Bugs 49175, 49300, and this one.
PDT: Nominating for nsbeta3_ Reason: Tables and forms are prevalent in the web; tables have been problematic since early days (Mosaic 1.0, I believe). Important to have them work as smoothly as IE.
Keywords: nsbeta3
Can't we just cache the widget's screen offset and avoid having to ask the X server every time? Seems to me that, since X-server-roundtripping is such a bad idea, the widget should cache everything in sight and only flush the cache between X events (or something like that).
Yes, we could cache it. This would bloat nsWidget though, something that might not be very smart. I've been thinking about caching it in nsWindow only, as that is the one used here. I'll look into it.
8 bytes per widget isn't much. If you have a lot of widgets I think you'll find that 8 bytes per widget is a very small percentage of the total memory load.
Actually, I've got another idea. Why don't we hack the Mozilla nsIWidget layer to lazily create the underlying native widget --- i.e. only create the widget when it's shown? Better yet, when an nsIWidget is hidden we could move its native widget into a shared cache, and grab a widget from that cache when an nsIWidget is shown. This would totally solve the resource issues in bug 39544 too.
I mean, it would totally resolve the resource issues because even if you have 10,000 comboboxes, you only display one of them at a time so you only need one native widget. Likewise, XUL menus only really need 2-3 widgets (depending on the nesting depth of the submenus).
I am definitely for caching the coords in the widget, we have been reducing the number of widgets so the overhead shouldn't be a lot.
Marking as [nsbeta3-] a number of bugs that were already marked Future (but not [nsbeta3-]) because the Netscape engineer the bug is assigned to is overburdened. If you disagree with this decision, please provide information about customer and user impact, but please do not clear the [nsbeta3-] unless you are reassigning the bug to yourself and committing to a fix within the nsbeta3 timeframe.
Whiteboard: [nsbeta3-]
Ok, I've added a patch that does caching of window coordinates in nsWindow. It works well in my tree, and improves performance in the testcase. (Although performance sucks again since the O(n^2) fix in bug 49175 has been reverted.) rods, can you take a look at the patch and try to get it in?
Keywords: patch
If I put this patch in (id=13865) are there any other patches I need to put in? Or will this help out here and hopefully fix Bug 48230?
Well. If you put in this patch and the one in bug 49300 all the Xserver bottlenecks in this bug are fixed. The other problem is bug 49175, but fixing that lead to the problems described in bug 50335, so it had to be backed out. It seems that roc+moz@cs.cmu.edu will try to fix it in his rewrite of nsViewManager though. This will not fix bug 48230.
renominating for nsbeta3, it was my fault i still had it futred I am working on this one with alex
Whiteboard: [nsbeta3-]
Target Milestone: Future → M18
The patch file is out of date, I will attach a new patch for for this patch plus 49300.
sorry for my delay. this patch looks good to me. go ahead and check it in. r=pavlov
Whiteboard: Fix in hand
Marking nsbeta3+
Whiteboard: Fix in hand → [nsbeta3+]Fix in hand
The patch seems to be GTK-only, but this page kills Mozilla on Windows as well.
Daniel: That is due to bug 49175
Since it still take a lot of time to render this page, I am not going to mark this fixed. I have removed nsbeta3 because the patch has been checked in and it is much improved. I am not sure it it still needs the "crash" keyword, but it probably does.
Keywords: nsbeta3
Whiteboard: [nsbeta3+]Fix in hand
forgot to set to "future"
Target Milestone: M18 → Future
Updating QA contact.
QA Contact: ckritzer → bsharma
Just loading this page causes a crash on Win98, 10/3 branch build. Talkback ID 18521273
Keywords: rtm
Build: 2000092711 MN6 Platform: WinNT Loading the testcase provided in the "url" and the attached testcase, both hangs the browser.i.e., the browser does not respond and I have to close it through the Task Manager. Build: 2000092909 MN6 Platform: Linux The attached testcase loads fine and the "url" tesetcase takes about 10 min to load.
Rod indicated that the correct way to fix this will be to lazily instantiate the combobox dropdowns, but that is too big a change for rtm. Marking rtm-.
Whiteboard: [rtm-]
Summary: Mozilla takes 10 minutes to render a (large) table with form elements. → [CBX]Mozilla takes 10 minutes to render a (large) table with form elements.
maybe fixed with lazy dropdowns
Depends on: 62568
Whiteboard: [rtm-]
Target Milestone: Future → ---
I hope so. I have a portfolio at www.hsx.com with more than 700 stocks so my portfolio page have more than 700 combo-boxes. It takes more than 5mn on a PIII-600 (Win2k) to render the page and after that scrolling into the page is not usable :-( This is dogfood for me at home.
waiting for XBL form controls
Target Milestone: --- → Future
QA Contact Update
QA Contact: bsharma → vladimire
just some thoughts: I see improvement in the recent build: loading my portfolio (now with about 900 combos ;-) takes too much time but after that now I can scroll in the page I think the fix was from jst@netscape.com (the cvs log comment is: " Fixing bugs 64523, 50018, 57626, 59024, 61413 and probably others, making the document and form JS engine resolve hooks find what they're supposed to find, and nothing more, making the element-by-name and element-by-id lookup in the document be hashtable based to avoid walking the whole DOM tree over and over again when resolving names on the document object and also on form objects. This is an order of magnitude speedup for pages that contain a large number of form controls, such as hotmail and aol mail. Also did a bunch of cleanup here n' there. r=pollmann@netscape.com, sr=vidur@netscape.comI." is this relevant to this bug ? in fact the initial display of the page from the internet (64kbit/s connection)is quite fast but it stops (with 100%CPU and throbber blocked) several times during the page loading as it renders more combos) maybe the display time would be better if the render was done *once* when the page has finished loading ? when the file is saved locally page loading takes 1'20 at 100%CPU maybe this is because the data is coming too fast from the disk and the threshold used to render the combos is too small and the time is wasted doing incremental rendering ? I'll attach my local file (zipped because it is 1Mo HTML)
Attached file Portfolio with many combos (#900) (deleted) —
The jprof attached (warning, >800K) shows that ~70% of the time to load this page is in nsView::GetChild and ::GetNextSibling. (actually, I gave up waiting after ~ 5 minutes). These are all coming from within events dispatched by CreateWidget(), and GetChild is called directly from nsView::HandleEvent() (with is 84% including decendants) There are some other hotspots, but this is a good place to start. I suggest removing the "future" from this.
issue raised in performance meeting today. we would like to resurrect this bug for 0.9.5, and figure out how much work is needed to fix it... finding that loading a large page, a lot of time is spent on nsView::GetChild and ::GetNextSibling. rods can you investigate for a performance improvement? thanks!!!
Blocks: 71668
Target Milestone: Future → mozilla0.9.5
The best approach would probably be lazy instantiation (see Bug 62568 for analysis) A couple of things I noticed with a little bit of research: nsView uses a linked list so all GetChild calls are linear, so as each select is added 5 more views get added to the list that is searched each time. As each select is created it dispatches a CREATE event and an event when the Z order is set. I have an example with 200 selects and I have these different timings: I have done several tests, some with the nsView using a nsVoidArray instead of the linked list. And some tests with suppressing the two unneeded events from when the ScrollingView creates it's window and sets the Z-order. From start up (not in the debugger) until the selects appear (wall clock) VoidArray Linked-List % Savings ------------------------------------ 6.25 7.90 12% These timings were all in the debugger and cannot be compared to the timing above (these are wall clock timings): Suppress Events VoidArray Suppressing VoidArray Only Only Current Tip ------------------------------------------------------------- 7.47 7.89 8.23 10.02 25% 21% 18% (savings) When loading the 200 selects the GetChild was visited 253,559 times, as stated above an additional 5 new views for each new select. When suppressing the events the numbers of visits dropped to 115,513 which is a 55% savings in the number of calls to GetChild. Summary ---------- Most pages have very few views and the linked-list of views does not hamper performance. When there are a lot of selects, there are 5 new views for each drop-down of each new select. This ends up creating a very long list of views that needs to be search everytime inside GetChild. Also note that event processing is a little faster with the VoidArray (somewhat noticable) because the look up via the array is faster. The VoidArray impl would take up more memory, but since there are usually very few views it shouldn't impact the overall footprint by a lot. In Bug 62568, the CPU time for 200 selects was 10.65 for the Tip and 3.1 for lazy instantiation (LI), which translated into a savings of 71%.
Using voidarrays for nsViews is a good idea (though not a final solution, as you said). The overall cost is minimal, since while the array costs bytes, you save space in each view structure. The overhead is basically 2 words plus the amount of unused space in the array (normally less than 50%, average 25%). If we forsee removing large numbers of views from a list without destroying it, we should consider Compact()ing it _occasionally_ or if it shrinks a lot. I don't think this is an issue, however.
Rods: Are we still targetting 0.9.5 for either lazy instantiation or using nsVoidArrays (or nsAutoVoidArrays)? Both appear to be wins (the nsVoidArray saves time more generally, while Lazy Instantiation saves a lot in this particular instance. (It might help in cases like bugzilla query.cgi too.)
I doubt lazy instantiation is going to make it for 0.9.5. any chance of the voidarray change you tested (and maybe the supression) making it?
moving to 0.9.6
Target Milestone: mozilla0.9.5 → mozilla0.9.6
on win2000 and linux 7.1 - hangs the browser when trying to upload the testcase provided in the url on linux 7.1 - the 'no outer table in example' testcase is uploaded without a hang, but it is slow. works fine on Netscape 4.77.
Target Milestone: mozilla0.9.6 → Future
Attached file Form with 4000 input elements (deleted) —
complex forms which sometimes have hundreds of input elements per form. The attached HTML form has 4000 input elements. It loads in under one second on IE5.5, but takes 42 seconds to load using Mozilla 0.9.6. I'm testing on an 800-MHz Pentium III with 384 MB of RAM and nothing else going on. This is a genuine show-stopper, and it's keeping me from being able to deliver a very large intranet web application which is mission-critical to the success of a corporation. Any help to fix this would be greatly appreciated. Mozilla's functionality is great, but its speed is terrible in this area. Can anyone help, or is all hope lost? It's been over two years now that Mozilla has failed to overcome its speed issues. The Open Source community needs a fully-functional but FAST browser to compete with IE. Otherwise, M$ is going to continue to dominate. Is there a way we can light a fire under this issue and get it resolved quickly? Thanks!
The reason this bug was marked future is because the plan is to completely replace the current form element implementation with an XBL binding which would include support for both XUL and native widgets. bug 58317 The optimization that is necessary for the current frame-based form elements would not apply to the XBL-XUL implementation, so it would be wasted effort.
Bryner says he plans to hit 58317 for 1.0 or before; it's gated on bug 97062 (dependency is not marked). If it's not going to be done soon we'll need to patch around the problem.
Depends on: 58317
I don't think this bug is an issue any more. I loaded the 4000 input element test case on WINXP with 750Mhz machine using IE 6.0 and it takes 40 seconds to completely load. I also used a cvs release build of Mozilla from today and it took 42 seconds. The checkin for bug 112525 significantly sped up the loading of pages with large numbers of comboboxes. Marking FIXED.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
*** WRONG ***. This bug is NOT fixed. IE 5.5 loads the 4,000-element form in one second. Just because IE6.0 may be slower doesn't give us an excuse to be slow also. In fact, I find it hard to believe that IE 6.0 is slower than IE 5.5. Please re-open this bug so it can really get fixed, or I'll be forced to submit another. This is a HIGH PRIORITY!!! Copping out on serious bugs is one of the reasons why IE is stomping Netscape's butt. Let's not fall into that trap anymore. Thanks!
Note: Nav 4.79 takes 32 seconds to load the 4000 input element test case, using WINXP 750Mhz machine.
Opera 6.0: Takes 43 seconds to load and is unusable after loading the test case on WINXP. Opera takes around 10 seconds to initially display anything. I can not test IE 5.5 because it will not allow me to install it on WINXP. Someone else we need to test it on IE 5.5 Ron: Are you looking at only the time it takes to initially display or the entire document load? Can you actually scroll to the bottom a page within a few seconds and have it display the item 3999?
Ok. I was able to reproduce on IE 5.5. It does load the 4000 input element testcase almost immediately. re-opening
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Thanks! I really appreciate it. If anyone knows where I could look in the source code to start trying to fix this, please forward info to me at ron@roncemer.com and I'll try to help find out what's going on to cause the slowness. I'm new to the Mozilla source code, but I'm pretty good at optimizing code for speed without breaking functionality.
Woah, so now it's not enough to just be faster than IE6, we have to be faster than IE5.5 too on pages where IE6 is slower? That really raises the bar.
IE 5.0 Win98 233MMX 64MB - 4000 elements takes 14.75s. Quite fast, considering, and the first page of elements were available to interact with within a second. So it's not just IE 5.5 that's fast on this. On the first attachment ("no outer table"), it took 14.1s. mozilla 2001113003 233MMX 64MB - 4000 elements takes 157s. Over 10 times as long, and for all that time there was no display and no responsiveness, not even the throbber. Also, the disk was getting hit quite often for most of the load, so I think part of the issue was bloat. On the first attachment ("no outer table"), it too 608 seconds, or ~40 times longer, and there was no disk activity. That said, since many browsers have some trouble with the 4000 element test, I'm not _that_ worried about it. I am worried about the 300 and 500 and even 900 element versions, and I'm worried about no being able to interact with the 4000 element version for the entire time it's loading. This is one of the many things that blocks our UI thread and really shouldn't, though I imagine it's years too late to worry about that.
I rebooted, cleared my cache on IE6 and I was able to get IE6 to load the page in about 1 second. Here are the numbers I see now 4000 input type=text -------------------- 4.x 30 sec Mozilla 28 sec IE 6 1 sec select (combobox) loading 300 comboboxes ---------------------------------------- 4.x 5 sec Mozilla 11.8 sec (Fixing bug 112861 would get this down to around 8 secs) IE 4 sec 4000 input type=checkbox ------------------------ 4.x 40 sec Mozilla 3.2 sec IE 1 sec 4000 input type=radio ---------------------- 4.x 20 sec Mozilla 22 sec (Changing nsFromFrame::GetRadioInfo to use a hashtable would get this down to around 3sec) IE 1 sec 4000 input type=button ---------------------- 4.x 40 sec Mozilla 4 sec IE 1 sec So in conclusion the real problem spot is input type=text.
Aaaah, OK. Now things make sense :-). IE5.5, at least, uses native widgets for comboboxes but not for edit controls, which probably explains the differences between control types in IE. > though I imagine it's years too late to worry about that. Nah. We should be able to introduce finer-granularity interruptibility in layout without rewriting the world, but don't expect that before 1.0. What would REALLY rock here is if we could lazily create frames for stuff we know isn't scrolled onto the scren. But that's another post-1.0 optimization.
"Changing nsFromFrame::GetRadioInfo to use a hashtable would get this down to around 3sec" (instead of 22 sec) Is there a bug number for this one ?
Note: With the outer frame it still take 605 seconds to load on 750Mhz AMD machine running WINNT. Without the outerframe it takes 58 seconds.
I noticed yesterday that if I create a 4,000 input element form in which all input elements are hidden, it still takes a *LONG* time (over 30 seconds) to load the page. BUT, if I remove all whitespace between input tags, such that the closing bracket of one input tag is immediately followed by the opening bracket of the next, then the page loads in less than two seconds, which is pretty quick.
Depends on: 57209
Priority: P1 → P3
With a current nightly build, the problem is still there. As a side note, the repro URL has the problem that all pull-down menus in the table appear several cm to the right of the button. That is not true for attachment #8771 [details], where the menu alignment is correct. Is there any relation to bug 74888?
*** Bug 137275 has been marked as a duplicate of this bug. ***
QA Contact: vladimire → tpreston
Keywords: testcase
Using trunk build 2003020308 on winxp pro sp1,1.1ghz,512ram this still freezes mozilla. Is this related to bug 168157 ?
See this also http://forums.mozillazine.org/viewtopic.php?t=34492 It refers to this page http://weird.peytz.dk/test/bigform.html Which has a big form in a big table - Mozilla / Firebird is a lot slower than i.e. IE in loading/rendering it...
I think the crash keyword can be removed. I just tested this and the original link loads (with no images though), and all the testcases load. I had no crashes. All these tests are still slow. The 4000 input element testcase took 25 seconds on my AMD Athlon XP 3000+ with 1 gig or RAM. Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7b) Gecko/20040316
4000 element case takes 65 seconds on my Linux P2/266. None of the attachments seem to crash anymore, though. Removing crash keyword and myself from CC.
Keywords: crash
no longer exists - http://weird.peytz.dk/test/bigform.html 20 seconds - http://www.lysator.liu.se/~alla/moz/rules.html -- SM and FF render in same amount of time as IE Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8) Gecko/20051111 Firefox/1.5
closing WFM 2.0.0.5 Vista. IE still comparable
Status: REOPENED → RESOLVED
Closed: 23 years ago17 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: