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

Miles Sabin msabin at cromwellmedia.co.uk
Fri Jan 14 15:55:31 GMT 2000


David Brownell wrote,
> Literals are already interned.  It's in the language 
> spec. Look at the javadoc for java.lang.String.intern () 

Good point ... and one which I'd <blush>unaccountably
overlooked</blush>.

I don't think this materially affects my argument tho',
because the only time where the performance difference
between,

  foo == "literal"

and,

  foo.equals("literal")

is going to be significant is where there are long chains
of comparisons, ie.,

  if(foo == "elem1")
    // do stuff for elem1
  else if(foo == "elem2")
    // do stuff for elem2
  
  // ... repeat many times ...

  else if (foo == "elemn")
    // do stuff for elemn

where it'd be a far better idea (both from performance and 
software design POVs) to do something like,

  ElementHandler handler =
    (ElementHandler)someTable.lookup(foo);

  handler.doStuffForElement();

Cheers,


Miles

-- 
Miles Sabin                       Cromwell Media
Internet Systems Architect        5/6 Glenthorne Mews
+44 (0)20 8817 4030               London, W6 0LJ, England
msabin at cromwellmedia.com          http://www.cromwellmedia.com/

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ 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