You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-dev@xmlgraphics.apache.org by John Austin <jw...@sympatico.ca> on 2003/12/01 15:14:17 UTC

Re: String.intern() thoughts and more stats

On Mon, 2003-12-01 at 02:11, Glen Mazza wrote:
> --- John Austin <jw...@sympatico.ca> wrote:
> > I mentioned yesterday that I thought I had read a
> > comment
> > by Bruce Eckel suggesting that String.intern() might
> > be 
> > avoided. 
> > 
> > I could not find the reference in either the 2nd or
> > 3rd editions
> > of "Thinking In Java".
> > 
> 
> No need-the "gotcha" site you gave earlier did give
> some specific drawbacks under string compares:  
> 
> http://mindprod.com/jgloss/gotchas.html#COMPARISON
> 
> BTW, The third drawback listed in the link above gave
> "weak references" as an alternative implmentation--I'm
> unsure what that construct is about--is this the
> vtable you were speaking of in an earlier message?
> 
> Also, another question for my comprehension here--the
> "canonical mappings" you have been referring to in
> this thread--is this the same thing as the property
> enumerations that alt-design uses?  I'm unsure of the
> difference between the two.

I started using the term here after re-reading parts of Eckel's
Thinking in Java. I think the CM I refer to and the alt-design
implementation are almost to the same thing. 

>>From the on-line version of TIJ(3rd ed) the following excerpt:

TIJ313.htm:
Weak references are for implementing canonicalizing mappings where
instances of objects can be simultaneously used in multiple places in a
program, to save storage - that do not prevent their keys (or values)
from being reclaimed. 

Don't be mislead to the red herring of 'weak references'. I am
arguing for the "cache of unique objects" not for this GC technique.

After I started using a large .FO file to provide statistics, I
realized that we can use the same technique for larger non-string
objects. 

To this end, I have some more statistics.

In the sample FO file (DocBook: The Definitive Guide), there are
285,223 tags but there are only 18,419 unique property lists.
(There may be fewer, my perl stats program treats different
orderings of the same attributes as different lists)

The program prints out property lists which occur more than 100 times. I
prefix each list with tag names to distinguish empty lists by tag type.
That increases the number of lists by only 15 or so.



Number of Elements by tree level:
level=1 count=1
level=2 count=473
level=3 count=5242
level=4 count=5480
level=5 count=7129
level=6 count=26231
level=7 count=22475
level=8 count=36447
level=9 count=62288
level=10 count=38536
level=11 count=30486
level=12 count=23641
level=13 count=23190
level=14 count=2023
level=15 count=771
level=16 count=701
level=17 count=109


Element frequencies:
a 24
fo:basic-link 5225
fo:block 112142
fo:conditional-page-master-reference 48
fo:external-graphic 1097
fo:flow 472
fo:footnote 22
fo:footnote-body 22
fo:inline 62792
fo:layout-master-set 1
fo:leader 1764
fo:list-block 279
fo:list-item 1004
fo:list-item-body 1004
fo:list-item-label 1004
fo:marker 5335
fo:page-number 1872
fo:page-number-citation 3224
fo:page-sequence 472
fo:page-sequence-master 12
fo:region-after 38
fo:region-before 38
fo:region-body 38
fo:repeatable-page-master-alternatives 12
fo:root 1
fo:simple-page-master 38
fo:static-content 4720
fo:table 6497
fo:table-body 6497
fo:table-cell 33174
fo:table-column 19225
fo:table-footer 1
fo:table-header 29
fo:table-row 15301
fo:wrapper 1799


Property List frequencies:
395	fo:basic-link internal-destination=common.attributes,
66878	fo:block 
1292	fo:block
end-indent=24pt,text-align-last=justify,last-line-end-indent=-24pt,
2119	fo:block
font-family=monospace,space-after.optimum=1em,white-space-collapse=false,text-align=start,space-before.maximum=1.2em,space-before.optimum=1em,wrap-option=no-wrap,space-before.minimum=0.8em,space-after.maximum=1.2em,linefeed-treatment=preserve,space-after.minimum=0.8em,
5082	fo:block
font-family=sans-serif,Symbol,ZapfDingbats,keep-together=always,
236	fo:block
font-family=sans-serif,Symbol,ZapfDingbats,margin-left=-4pc,keep-together=always,
439	fo:block
font-family=sans-serif,space-after.optimum=0.5em,hyphenate=false,font-weight=bold,font-size=18pt,space-after.maximum=0.6em,space-after.minimum=0.4em,keep-with-next.within-column=always,space-after=1em,
5321	fo:block
font-family=sans-serif,space-before.maximum=1.2em,font-weight=bold,space-before.optimum=1.0em,space-before.minimum=0.8em,keep-with-next.within-column=always,
3768	fo:block font-family=serif,Symbol,ZapfDingbats,margin-left=-4pc,
3533	fo:block font-size=17.28pt,
1722	fo:block font-size=20.735999999999997pt,
104	fo:block font-weight=bold,
5332	fo:block keep-with-next.within-column=always,
439	fo:block space-after=1em,
6037	fo:block
space-before.maximum=1.2em,space-before.optimum=1em,space-before.minimum=0.8em,
2558	fo:block span=none,
191	fo:block start-indent=1pc,
476	fo:block text-align=center,
472	fo:flow flow-name=xsl-region-body,
2114	fo:inline 
50373	fo:inline font-family=monospace,
175	fo:inline font-family=monospace,font-style=italic,
448	fo:inline font-family=serif,
1055	fo:inline font-style=italic,
5817	fo:inline font-weight=bold,
115	fo:inline hyphenate=false,
1292	fo:inline keep-together.within-line=always,
1292	fo:inline keep-with-next.within-line=always,
462	fo:leader color=black,leader-pattern=rule,leader-length=1in,
1292	fo:leader
keep-with-next.within-line=always,leader-pattern-width=3pt,leader-pattern=dots,leader-alignment=reference-area,
1004	fo:list-item-body start-indent=body-start(),
313	fo:list-item-label end-indent=label-end(),
671	fo:list-item-label end-indent=label-end(),text-align=start,
5335	fo:marker marker-class-name=section.head.marker,
1872	fo:page-number 
446	fo:page-sequence
hyphenation-push-character-count=2,hyphenation-character=-,xmlns:axf=http://www.antennahouse.com/names/XSL/Extensions,language=en,hyphenate=true,hyphenation-remain-character-count=2,master-reference=body,format=1,
472	fo:static-content flow-name=blank-body,
472	fo:static-content flow-name=xsl-footnote-separator,
472	fo:static-content flow-name=xsl-region-after-blank,
472	fo:static-content flow-name=xsl-region-after-even,
472	fo:static-content flow-name=xsl-region-after-first,
472	fo:static-content flow-name=xsl-region-after-odd,
472	fo:static-content flow-name=xsl-region-before-blank,
472	fo:static-content flow-name=xsl-region-before-even,
472	fo:static-content flow-name=xsl-region-before-first,
472	fo:static-content flow-name=xsl-region-before-odd,
144	fo:table
space-before.maximum=1.2em,space-before.optimum=1em,space-before.minimum=0.8em,
1887	fo:table
width=100%,table-layout=fixed,border-bottom-width=0.5pt,border-bottom-style=solid,border-bottom-color=black,
1887	fo:table
width=100%,table-layout=fixed,border-top-color=black,border-top-style=solid,border-top-width=0.5pt,
6497	fo:table-body 
756	fo:table-cell 
1848	fo:table-cell
display-align=after,text-align=center,relative-align=baseline,
1848	fo:table-cell
display-align=after,text-align=left,relative-align=baseline,
1848	fo:table-cell
display-align=after,text-align=right,relative-align=baseline,
1848	fo:table-cell
display-align=before,text-align=center,relative-align=baseline,
1848	fo:table-cell
display-align=before,text-align=left,relative-align=baseline,
1848	fo:table-cell
display-align=before,text-align=right,relative-align=baseline,
2583	fo:table-cell
padding-bottom=2pt,padding-top=2pt,border-bottom-width=0.5pt,border-bottom-style=solid,border-right-color=black,padding-right=2pt,border-right-width=0.5pt,border-right-style=solid,padding-left=2pt,border-bottom-color=black,
1026	fo:table-cell
padding-bottom=2pt,padding-top=2pt,border-bottom-width=0.5pt,border-bottom-style=solid,border-right-color=black,padding-right=2pt,text-align=center,border-right-width=0.5pt,border-right-style=solid,padding-left=2pt,border-bottom-color=black,
956	fo:table-cell
padding-bottom=2pt,padding-top=2pt,border-bottom-width=0.5pt,border-bottom-style=solid,display-align=after,border-right-color=black,padding-right=2pt,text-align=center,border-right-width=0.5pt,border-right-style=solid,padding-left=2pt,border-bottom-color=black,
1578	fo:table-cell
padding-bottom=2pt,padding-top=2pt,border-bottom-width=0.5pt,border-bottom-style=solid,display-align=before,border-right-color=black,padding-right=2pt,text-align=left,border-right-width=0.5pt,border-right-style=solid,padding-left=2pt,border-bottom-color=black,
789	fo:table-cell
padding-bottom=2pt,padding-top=2pt,border-bottom-width=0.5pt,border-bottom-style=solid,display-align=before,padding-right=2pt,text-align=left,padding-left=2pt,border-bottom-color=black,
118	fo:table-cell
padding-bottom=2pt,padding-top=2pt,border-bottom-width=0.5pt,border-bottom-style=solid,padding-right=2pt,number-columns-spanned=2,padding-left=2pt,border-bottom-color=black,
2095	fo:table-cell
padding-bottom=2pt,padding-top=2pt,border-bottom-width=0.5pt,border-bottom-style=solid,padding-right=2pt,padding-left=2pt,border-bottom-color=black,
831	fo:table-cell
padding-bottom=2pt,padding-top=2pt,border-bottom-width=0.5pt,border-bottom-style=solid,padding-right=2pt,text-align=left,number-columns-spanned=3,padding-left=2pt,border-bottom-color=black,
142	fo:table-cell
padding-bottom=2pt,padding-top=2pt,display-align=before,border-right-color=black,padding-right=2pt,text-align=left,border-right-width=0.5pt,border-right-style=solid,padding-left=2pt,
278	fo:table-cell
padding-bottom=2pt,padding-top=2pt,padding-right=2pt,number-columns-spanned=2,padding-left=2pt,
5588	fo:table-cell
padding-bottom=2pt,padding-top=2pt,padding-right=2pt,padding-left=2pt,
4904	fo:table-cell
padding-bottom=2pt,padding-top=2pt,padding-right=2pt,text-align=left,number-columns-spanned=3,padding-left=2pt,
2552	fo:table-column column-number=1,
3918	fo:table-column
column-number=1,column-width=proportional-column-width(1),
2553	fo:table-column column-number=2,
3777	fo:table-column
column-number=2,column-width=proportional-column-width(1),
2549	fo:table-column column-number=3,
3776	fo:table-column
column-number=3,column-width=proportional-column-width(1),
11527	fo:table-row 
3774	fo:table-row height=14pt,
18419 Property Lists


Properties: 526648
Tags: 285223
num_keys: 117
num_vals: 13520

-- 
John Austin <jw...@sympatico.ca>