[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: String class: hack for ORP 1.0.9
From: |
David P Grove |
Subject: |
Re: String class: hack for ORP 1.0.9 |
Date: |
Tue, 12 Jul 2005 08:06:15 -0400 |
So, I'm having a hard time seeing how this "optimization" actually makes
the code faster under any reasonable assumptions of what an optimizing JIT
is going to do. It seems mostly harmless to have it (although it makes
the method larger, and thus a slightly less attractive candidate for
inlining), but if it actually buys you any measurable speedup on a "high
performance" VM, then you should really take a hard look at your VM/JIT
and find out why they didn't do a good job on the "unoptimized" version in
the first place. clone() on an array is just a short hand for a new
followed by an arraycopy, and the new followed by arraycopy idiom shows up
all over the place so you need to do a good job on it.
--dave
address@hidden wrote on 07/12/2005 04:54:01
AM:
> On Tue, 2005-07-12 at 13:02 +1200, Simon Kitching wrote:
> > I just wondered if it was time to remove this hack...
>
> Wow, that is a very old workaround. And indeed a nice optimization to
> have. A quick startup of eclipse (with just a little project) shows 4642
> hits of String.toCharArray() of which 4200 have (count == value.length).
> Thanks for finding this.
>
> Committed as:
>
> Reported by Simon Kitching <address@hidden>
> * java/lang/String.java (toCharArray): Return value.clone() when
> count == value.length.
>
> Cheers,
>
> Mark
>
> diff -u -r1.67 String.java
> --- java/lang/String.java 11 Jul 2005 22:30:07 -0000 1.67
> +++ java/lang/String.java 12 Jul 2005 08:48:23 -0000
> @@ -1499,10 +1499,9 @@
> */
> public char[] toCharArray()
> {
> - // XXX ORP 1.0.9 crashes on (char[]) clone() during bootstrap, so
we
> - // omit this optimization for now.
> - // if (count == value.length)
> - // return (char[]) value.clone();
> + if (count == value.length)
> + return (char[]) value.clone();
> +
> char[] copy = new char[count];
> VMSystem.arraycopy(value, offset, copy, 0, count);
> return copy;
>
> [attachment "signature.asc" deleted by David P Grove/Watson/IBM]
> _______________________________________________
> Classpath mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/classpath