RE: String interning (WAS: SAX2/Java: Towards a final form)
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.
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format