Closed Bug 76151 Opened 24 years ago Closed 23 years ago

Extremely slow leaving big page

Categories

(Core :: CSS Parsing and Computation, defect)

x86
Windows 2000
defect
Not set
minor

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: bratell, Assigned: pierre)

References

()

Details

(Keywords: perf)

It now takes 20 seconds to load the colour stress table case, but it takes 60
seconds without visible cues leaving it.

STEPS TO REPRODUCE:
1. Go to http://www.google.com/
2. Go to http://www.mozilla.org/newlayout/testcases/stress/wbtblclr.html
3. Wait for it to load (10-60 seconds depending on computer speed).
4. Press the back button.

EXPECTED RESULT
5. See the Google page immediatly

ACTUAL RESULT
5. Nothing but a non standard mouse pointer. But if you wait a minute or two you
will come to the Google page.

COMMENTS
I see this as a bigger useability problem then slow loading since is is a common
operation and for the user it looks as if the browser has hanged. The user can't
see any reason for the operation to be slow either. (Neither can I).


This was on a home built Mozilla from April 13, 2001 or something like that.
hmm. linux cvs build (non-psm) from around midnight CET re-renders the google
page after approx 3-4 sec. (p3/500). Not as snappy as NC4.* but way faster than
what you observe.
Hmm. Could it be something that is Windows only maybe (or worse, my system 
only)? How did you go back? I clicked on the back button with the mouse. I've 
seen this for a while but have not filed a bug until now.
Wfm 2001041508 / Win98SE.
I spent some time in quantify to see what it was and found the following:

95% of the time was spent in nsDocShell::SetupNewViewer because it assigned 
something with assign_with_Addref to a nsCOMPtr which cause the previous content 
(a DocumentViewerImpl) to be released and therefore destroyed. 
94% of the total time was spent in 1 call to the DocumentViewerImpl destructor 
which released 30000 nsTextInputListener times which caused a PresShell to be 
deleted. 

That caused two things to happen. A FrameManager was destroyed (thats 25% of the 
total time) and the styles (through StyleSetImpl) was released (~75% of the 
time). The 75% seems to be memory releases. A lot of 
PLHashTableEnumerateEntries, HashTableEnumDestroy, nsVoidArray::~nsVoidArray, 
hashFreeEntry and stuff. I wonder if this will improve with the memory pooling 
of stylesets.

The 25% (A destroyed FrameManager) is caused by a destroyed ViewPortFrame which 
destroys the list of frames (there are 20126 frames).

Conclusion:
All the time is spent deallocating memory and the actual time depends on the 
state of the heap when going back. I guess my heap has been in really bad shape 
for some reason which is why it is slower for me than for the others who have 
tested. 

Since the biggest speedup will come from the styles being better handled in 
memory, I will make this bug blocked by the pooling styles bug (bug 65266).
Assignee: asa → pierre
Severity: normal → minor
Component: Browser-General → Style System
Depends on: 65266
Keywords: perf
QA Contact: doronr → ian
I used the back-button. Repeated it too, going forward to the stresstest
again - and then back once more, to see if something changed.

This is a fairly vanilla non-debug build with mailnews. Java_vm was triggered
while i tested. Also have flash registered. None of these had actually been used
in the session i tested in though.

Other info:
512MB RAM
272636 byte history file
84974 bookmarks file
Cache had been wiped clean the same day.
Blocks: 71668
Old bug: WorksForMe now...
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.