You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by rm...@apache.org on 2010/02/28 11:41:28 UTC

svn commit: r917161 - in /lucene/java/trunk/contrib: CHANGES.txt analyzers/common/src/java/org/tartarus/snowball/Among.java analyzers/common/src/java/org/tartarus/snowball/SnowballProgram.java

Author: rmuir
Date: Sun Feb 28 10:41:28 2010
New Revision: 917161

URL: http://svn.apache.org/viewvc?rev=917161&view=rev
Log:
LUCENE-2288: remove more unnecessary snowball object creation

Modified:
    lucene/java/trunk/contrib/CHANGES.txt
    lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowball/Among.java
    lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowball/SnowballProgram.java

Modified: lucene/java/trunk/contrib/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/CHANGES.txt?rev=917161&r1=917160&r2=917161&view=diff
==============================================================================
--- lucene/java/trunk/contrib/CHANGES.txt (original)
+++ lucene/java/trunk/contrib/CHANGES.txt Sun Feb 28 10:41:28 2010
@@ -121,6 +121,10 @@
    take advantage of this for faster performance.
    (Steven Rowe, Uwe Schindler, Robert Muir)
 
+ * LUCENE-2194, LUCENE-2201, LUCENE-2288: Snowball stemmers in contrib/analyzers
+   have been optimized to work on char[] and remove unnecessary object creation.
+   (Shai Erera, Robert Muir)
+
 Test Cases
 
  * LUCENE-2115: Cutover contrib tests to use Java5 generics.  (Kay Kay

Modified: lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowball/Among.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowball/Among.java?rev=917161&r1=917160&r2=917161&view=diff
==============================================================================
--- lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowball/Among.java (original)
+++ lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowball/Among.java Sun Feb 28 10:41:28 2010
@@ -34,6 +34,7 @@
 import java.lang.reflect.Method;
 
 public class Among {
+    private static final Class<?>[] EMPTY_PARAMS = new Class[0];
     public Among (String s, int substring_i, int result,
 		  String methodname, SnowballProgram methodobject) {
         this.s_size = s.length();
@@ -46,7 +47,7 @@
 	} else {
 	    try {
 		this.method = methodobject.getClass().
-		getDeclaredMethod(methodname, new Class[0]);
+		getDeclaredMethod(methodname, EMPTY_PARAMS);
 	    } catch (NoSuchMethodException e) {
 		throw new RuntimeException(e);
 	    }

Modified: lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowball/SnowballProgram.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowball/SnowballProgram.java?rev=917161&r1=917160&r2=917161&view=diff
==============================================================================
--- lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowball/SnowballProgram.java (original)
+++ lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowball/SnowballProgram.java Sun Feb 28 10:41:28 2010
@@ -44,8 +44,11 @@
  * refactored StringBuffers to StringBuilder
  * uses char[] as buffer instead of StringBuffer/StringBuilder
  * eq_s,eq_s_b,insert,replace_s take CharSequence like eq_v and eq_v_b
+ * reflection calls (Lovins, etc) use EMPTY_ARGS/EMPTY_PARAMS
  */
 public abstract class SnowballProgram {
+    private static final Object[] EMPTY_ARGS = new Object[0];
+
     protected SnowballProgram()
     {
 	current = new char[8];
@@ -337,8 +340,7 @@
 		if (w.method == null) return w.result;
 		boolean res;
 		try {
-		    Object resobj = w.method.invoke(w.methodobject,
-						    new Object[0]);
+		    Object resobj = w.method.invoke(w.methodobject, EMPTY_ARGS);
 		    res = resobj.toString().equals("true");
 		} catch (InvocationTargetException e) {
 		    res = false;
@@ -406,8 +408,7 @@
 
 		boolean res;
 		try {
-		    Object resobj = w.method.invoke(w.methodobject,
-						    new Object[0]);
+		    Object resobj = w.method.invoke(w.methodobject, EMPTY_ARGS);
 		    res = resobj.toString().equals("true");
 		} catch (InvocationTargetException e) {
 		    res = false;