Open Bug 83757 Opened 23 years ago Updated 2 years ago

interruptible frame construction

Categories

(Core :: Layout, defect, P4)

defect

Tracking

()

Future
tracking-b2g backlog

People

(Reporter: waterson, Unassigned)

References

Details

(Keywords: perf)

Attachments

(7 files)

This is a placeholder bug for implementing interruptible frame construction.
Status: NEW → ASSIGNED
Keywords: perf
Priority: -- → P4
Target Milestone: --- → Future
Frame construction times collected on 750MHz machine, running iBench. Frame Constructor count=5029, minimum=0, maximum=460, mean=10.15+/-37.29 0: 4221 10: 252 20: 55 30: 134 40: 43 50: 22 60: 56 70: 32 80: 18 90: 9 100: 8 110: 34 120: 26 130: 16 140: 5 150: 8 160: 12 170: 4 180: 9 190: 12 200: 1 210: 1 220: 8 240: 1 250: 5 260: 2 270: 1 280: 9 290: 16 300: 5 310: 1 350: 1 360: 1 460: 1
Depends on: 83737
So I collected the above data, plotting frames constructed vs. time using a patch I'll attach in a second. The data was collected on a 750MHz laptop running Win2K against iBench. The idea is to try to figure out whether frame construction time is fairly linear in the number of frames, in which case doing something simple like doing the recursion in an interruptible |while| loop instead of the C runtime stack should work well.
Note that we don't exactly count the number of frames created; instead, we count the number of frame-creating calls to ConstructFrameInternal(). This is probably a better number, as it'd be the most natural point at which to ``flatten'' the runtime stack recursion.
Urgh. Can't keep my axes straight. Here's the histogram of the frame construction times, collected on a 200MHz WinNT box against iBench: Frame Constructor count=4336, minimum=0, maximum=2850, mean=59.79+/-181.73 0: 2344 10: 717 20: 261 30: 86 40: 50 50: 49 60: 101 70: 67 80: 88 90: 21 100: 20 110: 5 120: 13 130: 16 140: 56 150: 62 160: 21 170: 18 180: 9 190: 5 200: 3 220: 1 230: 2 240: 9 250: 7 260: 20 270: 17 280: 14 290: 6 300: 7 310: 16 320: 9 330: 6 340: 3 350: 10 360: 4 370: 4 380: 1 390: 1 400: 10 410: 2 420: 3 430: 1 440: 1 460: 3 470: 5 480: 5 490: 2 500: 13 510: 2 520: 9 530: 5 540: 3 550: 2 560: 5 570: 2 580: 8 590: 4 610: 1 670: 1 680: 5 690: 7 700: 2 720: 6 730: 4 740: 1 750: 1 790: 1 820: 3 830: 2 840: 3 850: 1 860: 1 870: 4 890: 1 910: 1 920: 3 930: 8 940: 2 1020: 1 1160: 3 1170: 2 1190: 1 1200: 1 1210: 1 1220: 2 1230: 6 1240: 4 1250: 3 1260: 3 1270: 5 1280: 2 1420: 1 1430: 1 1450: 3 1460: 2 1560: 1 2180: 1 2850: 1
I should also note that the 750MHz histogram and scatter plot do _not_ correspond to the same run (obviously). The 200MHz histogram and scatter plot _do_ correspond to data collected in the same run.
Okay, I did another iBench run on the 750MHz machine that has this histogram: Frame Constructor count=2965, minimum=0, maximum=390, mean=14.14+/-39.87 0: 2220 10: 214 20: 122 30: 82 40: 22 50: 69 60: 35 70: 12 80: 9 90: 35 100: 34 110: 5 120: 10 130: 14 140: 7 150: 19 160: 5 180: 6 190: 2 210: 1 220: 6 230: 2 240: 7 250: 22 260: 2 300: 2 390: 1 ...and this scatter plot:
Aw for cryin' out loud. Let's try that again.
So if you compare the 200MHz data, <http://bugzilla.mozilla.org/showattachment.cgi?attach_id=36903> and the 750MHz data, <http://bugzilla.mozilla.org/showattachment.cgi?attach_id=36905> It looks pretty similar in shape, and it looks like common sense applies: more frames means more time. Specifically, there are no outliers in the upper left- hand corner of the graph (really long time to construct few frames) that'd make a simple approach to interruption break. I'll tinker around with that to see how hard it looks.
Blocks: 71668
Keywords: patch
Would that also improve incremental loading?
QA Contact: chrispetersen → layout
[Tracking Requested - why for this release]:

The bug assignee didn't login in Bugzilla in the last 7 months.
:dholbert, could you have a look please?
For more information, please visit auto_nag documentation.

Assignee: waterson → nobody
Status: ASSIGNED → NEW
Flags: needinfo?(dholbert)
Flags: needinfo?(dholbert)
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: