String interning (WAS: SAX2/Java: Towards a final form)

Miles Sabin msabin at
Thu Jan 13 10:57:46 GMT 2000

David Brownell wrote,
> So Miles, if you prefer the occasional synchronization issue
> to the routine method invocation overhead, use a parser that
> obliges you.  (Yes, I'm assuming SAX2 doesn't mandate any
> interning, just exposes whether or not it's done.)

Well, if your assumption is correct, then fine. But I rather
got the impression that some people wanted SAX2 to make
guarantees about Strings being returned java-interned.

> Though I daresay you'll find that the synchronization isn't
> usually measurable, while your evidently preferred 
> alternative (lots of String.equals calls) will consistently 
> show up as a performance problem.  At least that's been the 
> case when I've made such measurements.

Except that String.intern() isn't the _only_ way of making
foo.equals(bar) iff foo == bar (in particular contexts, as
opposed to across the whole JVM).

I use thread-local app-interning and ==, or no interning at all 
and String.equals() ... as Arkin noted the overhead in the 
latter case isn't too bad with a decent JIT.



Miles Sabin                       Cromwell Media
Internet Systems Architect        5/6 Glenthorne Mews
+44 (0)20 8817 4030               London, W6 0LJ, England
msabin at

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at
Archived as: or CD-ROM/ISBN 981-02-3594-1
Please note: New list subscriptions now closed in preparation for transfer to OASIS.

More information about the Xml-dev mailing list