String interning

David Megginson david at megginson.com
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 
lines):

  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)) {
                  j++;
              }
          }
      }
  }

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

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

-- 
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