Robert, as noted in my other eMail, ist only slow for the generic Object[] method (as it uses j.l.reflect.Array.newInstance(Class componentType)). We are talking here about byte[], and the Arrays method is implemented with the same 3 lines of code, Simon replaced. The only difference is a Math.min() which is intrinsic (it is used, as Arrays.copyOf supports shrinking size, so the System.arrayCopy() needs upper limit to not AIOOBE).
Uwe ----- Uwe Schindler H.-H.-Meier-Allee 63, D-28213 Bremen http://www.thetaphi.de eMail: u...@thetaphi.de > -----Original Message----- > From: Robert Muir [mailto:rcm...@gmail.com] > Sent: Thursday, June 30, 2011 3:05 PM > To: dev@lucene.apache.org; simon.willna...@gmail.com > Cc: comm...@lucene.apache.org > Subject: Re: svn commit: r1141510 - > /lucene/dev/trunk/modules/facet/src/java/org/apache/lucene/util/Unsafe > ByteArrayOutputStream.java > > because on windows 32bit at least, -client is still the default on most jres > out > there. > > i realize people don't care about -client, but i will police > foo[].clone() / arrays.copyOf etc to prevent problems. > > There are comments about this stuff on the relevant bug reports (oracle's > site is down, sorry) linked to this issue. > https://issues.apache.org/jira/browse/LUCENE-2674 > > Sorry, I don't think we should use foo[].clone() / arrays.copyOf, I think we > should always use arraycopy. > > On Thu, Jun 30, 2011 at 8:55 AM, Simon Willnauer > <simon.willna...@googlemail.com> wrote: > > hmm are you concerned about the extra Math.min that happens in the > > copyOf method? > > I don't how that relates to "intrinsic" and java 1.7 > > > > I don't have strong feelings here just checking if you mix something > > up in the comment you put there... I am happy to keep the old and now > > current code > > > > simon > > > > On Thu, Jun 30, 2011 at 2:42 PM, <rm...@apache.org> wrote: > >> Author: rmuir > >> Date: Thu Jun 30 12:42:17 2011 > >> New Revision: 1141510 > >> > >> URL: http://svn.apache.org/viewvc?rev=1141510&view=rev > >> Log: > >> LUCENE-3239: remove use of slow Arrays.copyOf > >> > >> Modified: > >> > >> > lucene/dev/trunk/modules/facet/src/java/org/apache/lucene/util/Unsafe > >> ByteArrayOutputStream.java > >> > >> Modified: > >> > lucene/dev/trunk/modules/facet/src/java/org/apache/lucene/util/Unsafe > >> ByteArrayOutputStream.java > >> URL: > >> > http://svn.apache.org/viewvc/lucene/dev/trunk/modules/facet/src/java/ > >> > org/apache/lucene/util/UnsafeByteArrayOutputStream.java?rev=1141510&r > >> 1=1141509&r2=1141510&view=diff > >> > ========================================================== > =========== > >> ========= > >> --- > >> > lucene/dev/trunk/modules/facet/src/java/org/apache/lucene/util/Unsafe > >> ByteArrayOutputStream.java (original) > >> +++ > lucene/dev/trunk/modules/facet/src/java/org/apache/lucene/util/Un > >> +++ safeByteArrayOutputStream.java Thu Jun 30 12:42:17 2011 > >> @@ -2,7 +2,6 @@ package org.apache.lucene.util; > >> > >> import java.io.IOException; > >> import java.io.OutputStream; > >> -import java.util.Arrays; > >> > >> /** > >> * Licensed to the Apache Software Foundation (ASF) under one or more > >> @@ -72,7 +71,11 @@ public class UnsafeByteArrayOutputStream > >> } > >> > >> private void grow(int newLength) { > >> - buffer = Arrays.copyOf(buffer, newLength); > >> + // It actually should be: (Java 1.7, when its intrinsic on all > >> + machines) > >> + // buffer = Arrays.copyOf(buffer, newLength); > >> + byte[] newBuffer = new byte[newLength]; > >> + System.arraycopy(buffer, 0, newBuffer, 0, buffer.length); > >> + buffer = newBuffer; > >> } > >> > >> /** > >> > >> > >> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For > > additional commands, e-mail: dev-h...@lucene.apache.org > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional > commands, e-mail: dev-h...@lucene.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org