Closed Bug 12227 Opened 25 years ago Closed 25 years ago

Drop-down lists take too long to show

Categories

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

x86
All
defect

Tracking

()

VERIFIED WORKSFORME

People

(Reporter: cpratt, Assigned: pierre)

References

()

Details

Attachments

(1 file)

Build ID: 1999082008
Platform: Windows NT (Behavior is OK on Linux; Mac OS build currently bad)

To reproduce:
- Launch apprunner
- Load the above URL (Netscape internal only) or the attached test case
- Drop down the drop-down list displayed on the page

Result: It takes upwards of 3 seconds on a Pentium with MMX, 200 MHz, running
Windows NT 4.0 SP 5. This is an unacceptable length of time.

Note: This test page (which can be found it its original form at
mozillazine.org) has 5 tables nested within each other. If you take the FORM out
of the tables, performance is markedly improved.

From the DOS window: 123 Position Dropdown at: 0 330 1110 480
nsComboboxControlFrame::Reflow 143   Reason: eReflowReason_Incremental
nsComboboxControlFrame::Reflow 144   Reason: eReflowReason_Resize
124 Position Dropdown at: 0 330 1110 480
nsComboboxControlFrame::Reflow 145   Reason: eReflowReason_Resize
125 Position Dropdown at: 0 330 1110 480
nsComboboxControlFrame::Reflow 146   Reason: eReflowReason_Resize
126 Position Dropdown at: 0 330 1110 480
Warning - table cell content max element height 480 greater than desired height
360
nsComboboxControlFrame::Reflow 147   Reason: eReflowReason_Resize
127 Position Dropdown at: 0 330 1110 480
nsComboboxControlFrame::Reflow 148   Reason: eReflowReason_Resize
128 Position Dropdown at: 0 330 1110 480
Warning - table cell content max element height 480 greater than desired height
360
nsComboboxControlFrame::Reflow 149   Reason: eReflowReason_Resize
129 Position Dropdown at: 0 330 1110 480
nsComboboxControlFrame::Reflow 150   Reason: eReflowReason_Resize
130 Position Dropdown at: 0 330 1110 480
Warning - table cell content max element height 480 greater than desired height
360
nsComboboxControlFrame::Reflow 151   Reason: eReflowReason_Resize
131 Position Dropdown at: 0 330 1110 480
Assignee: karnaze → troy
Troy, I believe the incremental reflow solution we talked about (involving
the ability to say that nothing changed) will fix this since the table code is
probably doing a bunch of pass 1 reflows.
Assignee: troy → kmcclusk
I don't want to get stuck with this bug. Assigning to Kevin first to see if he
can avoid doing a reflow in the first place. That's the real problem

A seconday issue is optimizing table incremental reflow
Kevin, if we can't avoid the incremental reflow of the combo box frame, then you
should assign the bug back to me, of course
Summary: [PP] [PERF] Win32 - Drop-downlists take too long to show → [PP]Win32 - Drop-downlists take too long to show
Whiteboard: [Perf]
Assignee: kmcclusk → troy
After talking to Peter, there doesn't seem to be anyway that I can avoid doing
an incremental reflow. All of the gfx form elements use style rules to control
their appearance in the active state. The only way to tell if the button hasn't
really changed size is to reflow it's children. Even if I were to do something
special for the combo box button it would not solve the problem for other form
elements such as HTML4 buttons. In their case, the style rules for active can
apply both to the button and it's contents. There isn't anyway for the button to
know whether its content will change size unless the active style rule has been
applied to its children. Hopefully, the solution of returning whether the size
actually changed during incremental reflow will improve combo boxes and other
form elements performance when they are placed within nested tables.

Troy, reassigning back to you.

Troy, reassigning to you.
Status: NEW → ASSIGNED
Target Milestone: M11
OS: Windows NT → All
Summary: [PP]Win32 - Drop-downlists take too long to show → Drop-down lists take too long to show
Changing platform etc. to ALL. Using the 19990914xx builds on Linux and Windows
NT, performance is abysmal at (for example) my.yahoo.com. At My Yahoo!, I have
my page customized to show Flight Reservations. In this section, there are
drop-down lists of number of people, etc. On a 200 MHz Pentium running NT, it
takes 12-15 seconds to drop down those lists. A 350 MHz Pentium II running Red
Hat Linux 6 takes 10-12 seconds to drop down those lists. This is not good.
Target Milestone: M11 → M13
I need a real URL to test with. The simplified test case displays reasonably
quickly for me, and I don't think that's a big problem

As far as my.yahoo.com, I need something more concrete than a URL that I have to
customize to reproduce the problem

Please provide a suitable URL (or attachment) that demonstrates the problem
I agree. The original test case (attachment - poll.html) is a Win32 only
problem. If you'd like to see the problem with My Yahoo!, I've created a sort-of
version of that page for internal use only at http://schist/myy - try that on
Linux and Win32; it should show the performance issue. Just click on the Total
number of travellers thingy to select a number. It takes upwards of 15 seconds
to show on a 200 MHz Pentium with MMX running NT.
Thanks for the test case. Yes, the performance is unbelievably horrible
Whiteboard: [Perf] → [Perf][BLOCKER][BETA]
Assignee: troy → kmcclusk
Status: ASSIGNED → NEW
Kevin, when I look at the simplified test case above I see that there are _six_
style changed reflow commands being generated starting from when I move over the
combo box drop-down button.

The first such reflow comamnd happens when the button is entered, _before_ I
even click on the button.

I think the first order performance issue here is the fact that six reflow
commands is five more than should be generated

I'm reassigning the bug back to you. When the number of reflow commands is
reduced to something resonable (like one), if we still have a performance
problem on pages with tables then reassign the bug back
I changed the hover border width to match the default border width and that got
rid of the reflows that where happening upon entering the combo box button.Ther
e are still two reflows generated when clicking on the combo box dropdown. These
are caused by style rules which adjust the padding to make the button look
depressed. (1 reflow for down, 1 reflow for up).
Whiteboard: [Perf][BLOCKER][BETA] → [Perf][BLOCKER][BETA] I have a fix in my tree for combo boxes
Target Milestone: M13 → M11
I can fix the performance problem by not setting the padding on the combobox
dropdown button. I have the fix in my tree, just need permission to check it in.

The general problem is that setting padding causes a reflow. The padding is
needed to make buttons look "depressed".

Troy and Peter are working on a optimization which will allow padding to be
changed without generating a reflow if the overall dimensions of the content
area does not change.
Status: NEW → ASSIGNED
Target Milestone: M11 → M12
Assignee: kmcclusk → peterl
Status: ASSIGNED → NEW
To remove combobox reflows I changed padding settings for  the select's active
button to match non-active state. I Also changed padding+border to match between
button's with focus and active buttons drawn with focus. Added gif for active
state of combo box to indicate that it is depressed.

Still requires an optimization for collapse to prevent reflows from happening
when the combo box button is clicked on.

Peter, re-assinging to you.
Assignee: peterl → pierre
This is the NS_STYLE_HINT_MOVE issue.
Status: NEW → ASSIGNED
Blocks: 16950
Whiteboard: [Perf][BLOCKER][BETA] I have a fix in my tree for combo boxes → [dogfood]
Priority: P3 → P2
Blocks: 17432
Blocks: 18951
Blocks: 20203
Assignee: ckritzer → pierre
QA Contact: phillip → ckritzer
Status: NEW → ASSIGNED
Accepting the bug again. I guess it was a mistake from gerardok. That bug should
have never left my list.
Target Milestone: M13 → M14
Moving [DOGFOOD] in Status Summary to dogfood in keyword field.
Keywords: dogfood
Whiteboard: [dogfood]
This works pretty good for me with 2000021509. Marking WorksForMe.
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → WORKSFORME
No longer blocks: 17432
No longer blocks: 18951
No longer blocks: 20203
Marking VERIFIED WORKSFORME on:
- LinuxRH62 2000-09-07-08-M18 Commercial
- Win98     2000-09-07-08-M18 Mozilla
- MacOS86   2000-09-07-04-M18 Commercial
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: