You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2017/07/05 20:24:51 UTC

svn commit: r1800946 - in /uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl: FsIndex_iicp.java FsIndex_set_sorted.java FsIndex_singletype.java FsIterator_subtypes_ordered.java

Author: schor
Date: Wed Jul  5 20:24:51 2017
New Revision: 1800946

URL: http://svn.apache.org/viewvc?rev=1800946&view=rev
Log:
[UIMA-5479] fix for performance issue in comparator use

Modified:
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java?rev=1800946&r1=1800945&r2=1800946&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java Wed Jul  5 20:24:51 2017
@@ -226,6 +226,8 @@ class FsIndex_iicp<T extends FeatureStru
   /**
    * Maybe not used 3/2015
    * 
+   * Compares two instances of FsIndex_iicp, for ordering.
+   * 
    * Compares first using the type code of the main types
    *   If those are equal,
    *   Compares using the comparatorForIndexSpecs objects

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java?rev=1800946&r1=1800945&r2=1800946&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java Wed Jul  5 20:24:51 2017
@@ -252,4 +252,8 @@ public class FsIndex_set_sorted<T extend
   public int ll_maxAnnotSpan() {
     return maxAnnotSpan;
   }
+  
+  Comparator<TOP> getComparatorWithoutId() {
+    return comparatorWithoutID;
+  }
 }

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java?rev=1800946&r1=1800945&r2=1800946&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java Wed Jul  5 20:24:51 2017
@@ -229,6 +229,11 @@ public abstract class FsIndex_singletype
     
   /**
    * @see org.apache.uima.cas.FSIndex#compare(FeatureStructure, FeatureStructure)
+   * 
+   * Note: this is the "general" compare, based on 
+   *   runtime interpreting the index's definition of its Keys, and the type ordering.
+   *   
+   * Annotation Index instances should use the custom comparators
    */    
   @Override
   public int compare(FeatureStructure afs1, FeatureStructure afs2) {
@@ -241,7 +246,7 @@ public abstract class FsIndex_singletype
     FeatureStructureImplC fs2 = (FeatureStructureImplC) afs2;
 
     /**
-     * for each key:
+     * for each key defined by this index:
      *   if Feature:
      *     Switch by type:  float, 
      *       get the value:  fs1.getXXX, compare

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java?rev=1800946&r1=1800945&r2=1800946&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java Wed Jul  5 20:24:51 2017
@@ -24,6 +24,7 @@ import java.util.NoSuchElementException;
 
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.FeatureStructure;
+import org.apache.uima.jcas.cas.TOP;
 
 /**
  * Performs an ordered iteration among a set of iterators, each one corresponding to
@@ -46,11 +47,13 @@ public class FsIterator_subtypes_ordered
   
   private boolean wentForward = true;
   
-  final private Comparator<FeatureStructure> comparator; 
+  final private Comparator<TOP> comparator; 
 
   public FsIterator_subtypes_ordered(FsIndex_iicp<T> iicp) {
     super(iicp);
-    this.comparator = iicp.fsIndex_singletype;
+    this.comparator = (iicp.fsIndex_singletype instanceof FsIndex_set_sorted) 
+                        ? ((FsIndex_set_sorted)iicp.fsIndex_singletype).getComparatorWithoutId()
+                        : (Comparator) iicp.fsIndex_singletype;
     moveToStart();
   } 
   
@@ -265,8 +268,8 @@ public class FsIterator_subtypes_ordered
   private boolean is_before(FsIterator_singletype<T> l, FsIterator_singletype<T> r,
       int dir) {
 
-    final T fsLeft = l.get();
-    final T fsRight = r.get();
+    final TOP fsLeft = (TOP) l.get();
+    final TOP fsRight = (TOP) r.get();
     
     int d = comparator.compare(fsLeft, fsRight);