String interning

David Megginson david at
Fri Jan 14 22:08:12 GMT 2000

Miles Sabin writes:

 > > For comparison, I just whipped up a Java class to compare two 
 > > (non-equal) Strings 10,000,000 times.  Here are the USER 
 > > timings:
 > >
 > > No comparisons (startup overhead): 0.67 seconds
 > > Compare with ==:                   0.94 seconds (=0.2 seconds)
 > > Compare with equals():             8.00 seconds (=7.33 seconds)
 > >
 > > That's a very significant performance difference.
 > It's also a completely meaningless one unless we can see the
 > code and know something about the platform you're running on.
 > I'd be quite surprised if there was that much margin with a
 > Sun 1.2 JDK and Hotspot on Solaris or Win32.

Java2 on Linux.  Here's the code (uncomment or comment the appropriate 

  public class Hack
      public static void main (String args[])
          String a = "Charlie";
          String b = "Fred";
          int j = 0;;

          for (int i = 0; i < 10000000; i++) {
  //        if (a == b) {
            if (a.equals(b)) {

(The j++ stuff is to try to keep optimizers from removing the whole

I'll be very interested to see the results from Hotspot (don't forget
to comment out the whole loop at first to get the base startup time)
-- if they're not far apart for == and equals(), then this may become
a non-issue.

How do you run timings under Windows, by the way?

All the best,


David Megginson                 david 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