Below is a report that lists the incremental bloat from loading cnn.com
in gtkEmbed (so this is the layout engine only; no chrome stuff in the
way). The BASE case is gtkEmbed opened on about:blank, the INCR case is
gtkEmbed opened on http://www.cnn.com/. Since it's sorted by the
``biggest growers'', it filters out any ``overhead'' bloat that's part
and parcel of our fine infrastructure.
. We've got about 1MB of image data; which seems a bit much given the
sparse layout of cnn.com of late (I should've run this against a
static test; sorry...will do next time). Might be worth looking into.
. The font metrics stuff seems like it takes up an inordinate amount
of space (almost 160KB if you count both the metrics and the
nsFontGTK stuff). Any thoughts? Could we fetch any of this
data lazily?
. JS takes up a surprisingly large amout of memory; especially given the
relatively static nature of the page. (I didn't look at the scripts
that got loaded; perhaps there is a ton of dancing baloney that
isn't patently obvious to the naked eye.)
. There's about 140K of style data when you include the RuleHash, the
rule nodes, and the style contexts. Might be worth looking at that
in more detail.
. I'm not sure what the 36K of XML element is -- possibly some
mis-classification.
chris
---- Base ---- ---- Incr ---- ----- Difference ----
Type Count Bytes Count Bytes Count Bytes %Total
TOTAL 43166 2447344 73826 5030992 30660 2583648 100.00
nsImageGTK 12 2288 145 1045176 133 1042888 40.36
JS-unclassified 1927 82448 2049 466706 122 384258 14.87
nsFontMetricsGTK 241 8480 2662 135466 2421 126986 4.91
RuleHash 934 13612 5721 83644 4787 70032 2.71
FrameArena-unclassified 45 1188 1684 59708 1639 58520 2.27
nsStyleContext 24 1152 899 43152 875 42000 1.63
nsFontGTK 7 6028 46 45008 39 38980 1.51
nsXMLElement 314 12592 1356 49208 1042 36616 1.42
nsTextNode 9 396 831 36564 822 36168 1.40
JS-atom 754 16468 1364 52116 610 35648 1.38
nsResetStyleData 29 1024 1013 35216 984 34192 1.32
JSScopeProperty 393 14148 1336 48096 943 33948 1.31
js_MatchToken 453 12216 1529 41624 1076 29408 1.14
nsRuleNode 71 2000 1033 29936 962 27936 1.08
JS-function 325 9256 1252 35580 927 26324 1.02
nsPersistentProperties 657 21214 1599 44548 942 23334 0.90
nsString 1137 32996 2104 55920 967 22924 0.89
nsFont 2 24 241 21462 239 21438 0.83
StyleListImpl 1 4096 9 25344 8 21248 0.82
JS-script 46 2768 271 22439 225 19671 0.76
JS-Array 761 22344 1359 40792 598 18448 0.71
CSSDeclarationImpl 826 47136 1139 64728 313 17592 0.68
nsBlockFrame 1 72 231 16632 230 16560 0.64
AtomKey 294 3528 1634 19608 1340 16080 0.62
nsStylePosition 4 300 217 15276 213 14976 0.58
X-unclassified 564 41526 739 56210 175 14684 0.57
nsTextFragment 18 7220 900 19965 882 12745 0.49
nsCSSRule 684 54356 837 66596 153 12240 0.47
gtk-unclassified 4279 206724 4546 218614 267 11890 0.46
nsVoidArray 81 3888 320 15360 239 11472 0.44
nsSupportsArray 77 4004 296 15392 219 11388 0.44
css-unclassified 19 1216 193 12352 174 11136 0.43
void* 944 76328 1428 87367 484 11039 0.43
nsStyleDisplay 25 1252 214 10788 189 9536 0.37
nsCAutoString 1 108 89 9612 88 9504 0.37
JS-GC-arena 2 18478 3 27717 1 9239 0.36
nsSupportsHashtable 20 880 217 9548 197 8668 0.34
xpti-unclassified 172 193424 180 201616 8 8192 0.32
JSScope 106 5512 263 13676 157 8164 0.32
OTHER 26907 1514654 31877 1732230 4970 217576 8.42