String interning

David Megginson david at megginson.com
Fri Jan 14 20:35:59 GMT 2000


David Brownell writes:

 > If the concern is only memory efficiency, then I tend to agree
 > that there may well be more important things to worry about.
 > But maybe not; so the filter can benefit from knowing if the
 > data it gets is already interned.

That's just the question.  I think it's too much hassle for people to
have to do

  boolean namesAreInterned = 
   xmlReader.getFeature("http://xml.org/sax/features/interned-names");

and then

  if (name == "foo" || (!namesAreInterned || name.equals("foo"))) {
    do something
  }

every time they want to compare names, and I very much doubt that
people will be happy with

  private final static String FOO = mySAXInternTable.intern("foo");

and then

  if (name == FOO) {
    do something
  }

One of the basic design goals of SAX 1.0 was to keep the interface
simple, under the assumption that many (most?) of the users will not
be XML or Java gurus, or even well-experienced programmers in
general.

Keeping this goal in mind, then, there are only two reasonable
choices:

1. Declare that SAX2 names must always be interned as with
   java.lang.String.intern.

2. Declare that SAX2 names need not be interned as with
   java.lang.String.intern.

Them's the choices.


All the best,


David

-- 
David Megginson                 david at megginson.com
           http://www.megginson.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