[Home] [By Thread] [By Date] [Recent Entries]

  • From: Miles Sabin <msabin@c...>
  • To: xml-dev-digest@i...
  • Date: Wed, 19 Jan 2000 10:26:23 -0000

David Megginson wrote,
> Tyler Baker wrote,
> > And foo == "x", then your only additional overhead to a 
> > straight identity test is the dynamic method invocation of 
> > String.equals().
>
> Only if the strings are equal -- if you're in a long switch 
> statement, most of them won't be equal, and the overhead will be 
> much more than the function call.

With a JIT that can inline this is a non-issue. We lose the
function call overhead, and the != case is actually the best
case for equals() ... we may only have to inspect the first
character to determine a mismatch. So the overhead boils down
to a few extra instructions and a few extra memory accesses.

This isn't just theoretical ... Hotspot does just that. In
fact I can't see any real reason why less ambitious JITs
shouldn't be able to do just as well, because,

* java.lang.String is final, so dynamic method invocation can
  be short-circuited.

* java.lang.String is magic: it has a special role in the
  language right down to the byte-code level. JITs can, and
  probably should, special case it.

I think it would be useful if people using JVMs with poor String
performance hassled the relevant vendors/maintainers and got them
to improve the situation.

Cheers,


Miles

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


xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@i...
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.



Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member