You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2010/12/13 04:32:10 UTC

svn commit: r1045012 - in /lucene/dev/trunk/lucene/src/java/org/apache/lucene/util: ByteBlockPool.java RecyclingByteBlockAllocator.java automaton/Automaton.java automaton/BasicOperations.java automaton/State.java automaton/UTF32ToUTF8.java

Author: rmuir
Date: Mon Dec 13 03:32:09 2010
New Revision: 1045012

URL: http://svn.apache.org/viewvc?rev=1045012&view=rev
Log:
LUCENE-2792: revert slowdowns on -client vms that are unrelated to this issue

Modified:
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/ByteBlockPool.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/RecyclingByteBlockAllocator.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/Automaton.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/BasicOperations.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/State.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/UTF32ToUTF8.java

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/ByteBlockPool.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/ByteBlockPool.java?rev=1045012&r1=1045011&r2=1045012&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/ByteBlockPool.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/ByteBlockPool.java Mon Dec 13 03:32:09 2010
@@ -18,6 +18,7 @@ package org.apache.lucene.util;
  */
 import java.util.Arrays;
 import java.util.List;
+import static org.apache.lucene.util.RamUsageEstimator.NUM_BYTES_OBJECT_REF;
 
 /** 
  * Class that Posting and PostingVector use to write byte
@@ -116,7 +117,12 @@ public final class ByteBlockPool {
   }
 
   public void nextBuffer() {
-    buffers = ArrayUtil.grow(buffers, 2+bufferUpto);
+    if (1+bufferUpto == buffers.length) {
+      byte[][] newBuffers = new byte[ArrayUtil.oversize(buffers.length+1,
+                                                        NUM_BYTES_OBJECT_REF)][];
+      System.arraycopy(buffers, 0, newBuffers, 0, buffers.length);
+      buffers = newBuffers;
+    }
     buffer = buffers[1+bufferUpto] = allocator.getByteBlock();
     bufferUpto++;
 

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/RecyclingByteBlockAllocator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/RecyclingByteBlockAllocator.java?rev=1045012&r1=1045011&r2=1045012&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/RecyclingByteBlockAllocator.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/RecyclingByteBlockAllocator.java Mon Dec 13 03:32:09 2010
@@ -93,7 +93,13 @@ public final class RecyclingByteBlockAll
   @Override
   public synchronized void recycleByteBlocks(byte[][] blocks, int start, int end) {
     final int numBlocks = Math.min(maxBufferedBlocks - freeBlocks, end - start);
-    freeByteBlocks = ArrayUtil.grow(freeByteBlocks, freeBlocks + numBlocks);
+    final int size = freeBlocks + numBlocks;
+    if (size >= freeByteBlocks.length) {
+      final byte[][] newBlocks = new byte[ArrayUtil.oversize(size,
+          RamUsageEstimator.NUM_BYTES_OBJECT_REF)][];
+      System.arraycopy(freeByteBlocks, 0, newBlocks, 0, freeBlocks);
+      freeByteBlocks = newBlocks;
+    }
     final int stop = start + numBlocks;
     for (int i = start; i < stop; i++) {
       freeByteBlocks[freeBlocks++] = blocks[i];

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/Automaton.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/Automaton.java?rev=1045012&r1=1045011&r2=1045012&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/Automaton.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/Automaton.java Mon Dec 13 03:32:09 2010
@@ -40,6 +40,7 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.lucene.util.ArrayUtil;
+import org.apache.lucene.util.RamUsageEstimator;
 
 /**
  * Finite-state automaton with regular expression operations.
@@ -280,7 +281,9 @@ public class Automaton implements Serial
             worklist.add(t.to);
             t.to.number = upto;
             if (upto == numberedStates.length) {
-              numberedStates = ArrayUtil.grow(numberedStates);
+              final State[] newArray = new State[ArrayUtil.oversize(1+upto, RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
+              System.arraycopy(numberedStates, 0, newArray, 0, upto);
+              numberedStates = newArray;
             }
             numberedStates[upto] = t.to;
             upto++;

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/BasicOperations.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/BasicOperations.java?rev=1045012&r1=1045011&r2=1045012&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/BasicOperations.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/BasicOperations.java Mon Dec 13 03:32:09 2010
@@ -30,6 +30,7 @@
 package org.apache.lucene.util.automaton;
 
 import org.apache.lucene.util.ArrayUtil;
+import org.apache.lucene.util.RamUsageEstimator;
 
 import java.util.ArrayList;
 import java.util.BitSet;
@@ -458,7 +459,9 @@ final public class BasicOperations {
 
     public void add(Transition t) {
       if (transitions.length == count) {
-        transitions = ArrayUtil.grow(transitions);
+        Transition[] newArray = new Transition[ArrayUtil.oversize(1+count, RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
+        System.arraycopy(transitions, 0, newArray, 0, count);
+        transitions = newArray;
       }
       transitions[count++] = t;
     }
@@ -500,7 +503,9 @@ final public class BasicOperations {
     private PointTransitions next(int point) {
       // 1st time we are seeing this point
       if (count == points.length) {
-        points = ArrayUtil.grow(points);
+        final PointTransitions[] newArray = new PointTransitions[ArrayUtil.oversize(1+count, RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
+        System.arraycopy(points, 0, newArray, 0, count);
+        points = newArray;
       }
       PointTransitions points0 = points[count];
       if (points0 == null) {
@@ -645,7 +650,9 @@ final public class BasicOperations {
             final SortedIntSet.FrozenIntSet p = statesSet.freeze(q);
             worklist.add(p);
             if (newStateUpto == newStatesArray.length) {
-              newStatesArray = ArrayUtil.grow(newStatesArray);
+              final State[] newArray = new State[ArrayUtil.oversize(1+newStateUpto, RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
+              System.arraycopy(newStatesArray, 0, newArray, 0, newStateUpto);
+              newStatesArray = newArray;
             }
             newStatesArray[newStateUpto] = q;
             q.number = newStateUpto;

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/State.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/State.java?rev=1045012&r1=1045011&r2=1045012&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/State.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/State.java Mon Dec 13 03:32:09 2010
@@ -29,6 +29,7 @@
 
 package org.apache.lucene.util.automaton;
 import org.apache.lucene.util.ArrayUtil;
+import org.apache.lucene.util.RamUsageEstimator;
 
 import java.io.Serializable;
 import java.util.Collection;
@@ -110,7 +111,9 @@ public class State implements Serializab
    */
   public void addTransition(Transition t) {
     if (numTransitions == transitionsArray.length) {
-      transitionsArray = ArrayUtil.grow(transitionsArray);
+      final Transition[] newArray = new Transition[ArrayUtil.oversize(1+numTransitions, RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
+      System.arraycopy(transitionsArray, 0, newArray, 0, numTransitions);
+      transitionsArray = newArray;
     }
     transitionsArray[numTransitions++] = t;
   }

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/UTF32ToUTF8.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/UTF32ToUTF8.java?rev=1045012&r1=1045011&r2=1045012&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/UTF32ToUTF8.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/UTF32ToUTF8.java Mon Dec 13 03:32:09 2010
@@ -17,6 +17,7 @@ package org.apache.lucene.util.automaton
  * limitations under the License.
  */
 
+import org.apache.lucene.util.RamUsageEstimator;
 import org.apache.lucene.util.ArrayUtil;
 
 import java.util.List;
@@ -298,7 +299,9 @@ final class UTF32ToUTF8 {
   private State newUTF8State() {
     State s = new State();
     if (utf8StateCount == utf8States.length) {
-      utf8States = ArrayUtil.grow(utf8States);
+      final State[] newArray = new State[ArrayUtil.oversize(1+utf8StateCount, RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
+      System.arraycopy(utf8States, 0, newArray, 0, utf8StateCount);
+      utf8States = newArray;
     }
     utf8States[utf8StateCount] = s;
     s.number = utf8StateCount;