vgritsenko    2004/01/06 20:02:04

  Modified:    java/src/org/apache/xindice/core/filer BTree.java Paged.java
  Log:
  Minor search optimizations
  
  Revision  Changes    Path
  1.24      +34 -20    
xml-xindice/java/src/org/apache/xindice/core/filer/BTree.java
  
  Index: BTree.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/src/org/apache/xindice/core/filer/BTree.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- BTree.java        22 Dec 2003 01:35:50 -0000      1.23
  +++ BTree.java        7 Jan 2004 04:02:04 -0000       1.24
  @@ -679,7 +679,7 @@
           private Value getSeparator(Value value1, Value value2) {
               int idx = value1.compareTo(value2);
               byte[] b = new byte[Math.abs(idx)];
  -            System.arraycopy(value2.getData(), 0, b, 0, b.length);
  +            value2.copyTo(b, 0, b.length);
               return new Value(b);
           }
   
  @@ -818,10 +818,15 @@
                               case IndexQuery.BW:
                               case IndexQuery.IN:
                               case IndexQuery.SW:
  -                                for (int i = 0; i < ptrs.length; i++) {
  -                                    if (i >= leftIdx && i <= rightIdx) {
  -                                        getChildNode(i).query(query, 
callback);
  -                                    }
  +                                // TODO: Can leftIdx be less than 0 here?
  +                                if (leftIdx < 0) {
  +                                    leftIdx = 0;
  +                                }
  +                                if (rightIdx > ptrs.length - 1) {
  +                                    rightIdx = ptrs.length - 1;
  +                                }
  +                                for (int i = leftIdx; i <= rightIdx; i++) {
  +                                    getChildNode(i).query(query, callback);
                                   }
                                   break;
   
  @@ -829,10 +834,17 @@
                               case IndexQuery.NBW:
                               case IndexQuery.NIN:
                               case IndexQuery.NSW:
  -                                for (int i = 0; i < ptrs.length; i++) {
  -                                    if (i <= leftIdx || i >= rightIdx) {
  -                                        getChildNode(i).query(query, 
callback);
  -                                    }
  +                                if (leftIdx > ptrs.length - 1) {
  +                                    leftIdx = ptrs.length - 1;
  +                                }
  +                                for (int i = 0; i <= leftIdx; i++) {
  +                                    getChildNode(i).query(query, callback);
  +                                }
  +                                if (rightIdx < 0) {
  +                                    rightIdx = 0;
  +                                }
  +                                for (int i = rightIdx; i < ptrs.length; i++) 
{
  +                                    getChildNode(i).query(query, callback);
                                   }
                                   break;
   
  @@ -842,19 +854,21 @@
   
                               case IndexQuery.LT:
                               case IndexQuery.LEQ:
  -                                for (int i = 0; i < ptrs.length; i++) {
  -                                    if (i <= leftIdx) {
  -                                        getChildNode(i).query(query, 
callback);
  -                                    }
  +                                if (leftIdx > ptrs.length - 1) {
  +                                    leftIdx = ptrs.length - 1;
  +                                }
  +                                for (int i = 0; i <= leftIdx; i++) {
  +                                    getChildNode(i).query(query, callback);
                                   }
                                   break;
   
                               case IndexQuery.GT:
                               case IndexQuery.GEQ:
  -                                for (int i = 0; i < ptrs.length; i++) {
  -                                    if (i >= rightIdx) {
  -                                        getChildNode(i).query(query, 
callback);
  -                                    }
  +                                if (rightIdx < 0) {
  +                                    rightIdx = 0;
  +                                }
  +                                for (int i = rightIdx; i < ptrs.length; i++) 
{
  +                                    getChildNode(i).query(query, callback);
                                   }
                                   break;
   
  @@ -893,7 +907,7 @@
                                   if (rightIdx < 0) {
                                       rightIdx = -(rightIdx + 1);
                                   }
  -                                for (int i = 0; i < ptrs.length; i++) {
  +                                for (int i = 0; i < ptrs.length; i++) { // 
FIXME: VG: Optimize this loop
                                       if (i >= leftIdx && i <= rightIdx && 
query.testValue(values[i])) {
                                           callback.indexInfo(values[i], 
ptrs[i]);
                                       }
  
  
  
  1.25      +4 -4      
xml-xindice/java/src/org/apache/xindice/core/filer/Paged.java
  
  Index: Paged.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/src/org/apache/xindice/core/filer/Paged.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Paged.java        22 Dec 2003 01:34:11 -0000      1.24
  +++ Paged.java        7 Jan 2004 04:02:04 -0000       1.25
  @@ -140,12 +140,12 @@
        * The number of random access file objects that exist, either in the
        * cache [EMAIL PROTECTED] #descriptors}, or currently in use.
        */
  -    private int descCount = 0;
  +    private int descCount;
   
       /**
        * Whether the file is opened or not.
        */
  -    private boolean opened = false;
  +    private boolean opened;
   
       /**
        * The underlying file where the Paged object stores its pages.
  
  
  

Reply via email to