String interning

Miles Sabin msabin at
Tue Jan 18 10:44:01 GMT 2000

Tyler Barker wrote,
> You will get similiar results on every platform you test it on 
> unless the JVM authors figure out a way to make testing for 
> object identity more expensive than dynamic method
> invocation. Doing that would take some real talent (-:

I agree that == will always be faster than String.equals().
I don't agree that it will be _significantly_ so.

David reported a performance margin of 36:1 in favour of ==
for his benchmark on a Linux JDK 1.2. That's _way_ too large 
... Linux JVMs clearly have a way to go before they're ready for 

On WinNT with Sun's 1.3 beta and Hotspot server VM 2.0RC running 
David's benchmark I get a margin of 1.3:1 in favour of ==
(String.equals is presumably getting inlined so we're just
adding the cost of a couple of extra instructions and a
memory access or two to the inner loop). Even with the JIT 
disabled I only get a margin of 8:1 in favour of ==. As soon as 
I get a chance I'll test this on Solaris Sparc ... I'd expect 
similar results.

Bearing in mind that the cost of the code under the conditionals
is likely to completely drown out the small cost (with good JIT)
of String.equals relative to ==, I find it very difficult to see 
why the cost of String.intern'ing should be imposed on _all_
SAX implementers.



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