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);