Author: ggregory
Date: Tue Nov 12 21:06:11 2013
New Revision: 1541234

URL: http://svn.apache.org/r1541234
Log:
[CODEC-174] Small (4-5%) but consistent performance gain with this patch from 
https://issues.apache.org/jira/secure/attachment/12613346/CODEC-174-refactor-join-method-in-Phoneme.patch

Modified:
    
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
    
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java

Modified: 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
URL: 
http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java?rev=1541234&r1=1541233&r2=1541234&view=diff
==============================================================================
--- 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
 (original)
+++ 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
 Tue Nov 12 21:06:11 2013
@@ -30,6 +30,9 @@ import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 
+import org.apache.commons.codec.language.bm.Languages.LanguageSet;
+import org.apache.commons.codec.language.bm.Rule.Phoneme;
+
 /**
  * Converts words into potential phonetic representations.
  * <p>
@@ -107,8 +110,9 @@ public class PhoneticEngine {
 
             EXPR: for (final Rule.Phoneme left : this.phonemes) {
                 for (final Rule.Phoneme right : phonemeExpr.getPhonemes()) {
-                    final Rule.Phoneme join = left.join(right);
-                    if (!join.getLanguages().isEmpty()) {
+                       LanguageSet languages = 
left.getLanguages().restrictTo(right.getLanguages());
+                       if (!languages.isEmpty()) {
+                               final Rule.Phoneme join = new Phoneme(left, 
right, languages);
                         if (newPhonemes.size() < maxPhonemes) {
                             newPhonemes.add(join);
                         } else {

Modified: 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
URL: 
http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java?rev=1541234&r1=1541233&r2=1541234&view=diff
==============================================================================
--- 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
 (original)
+++ 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
 Tue Nov 12 21:06:11 2013
@@ -110,9 +110,13 @@ public class Rule {
         }
         
         public Phoneme(final Phoneme phonemeLeft, final Phoneme phonemeRight) {
-            this.phonemeText = new StringBuilder(phonemeLeft.phonemeText);
+            this(phonemeLeft.phonemeText, phonemeLeft.languages);
+            this.phonemeText.append(phonemeRight.phonemeText);
+        }
+
+        public Phoneme(final Phoneme phonemeLeft, final Phoneme phonemeRight, 
final Languages.LanguageSet languages) {
+            this(phonemeLeft.phonemeText, languages);
             this.phonemeText.append(phonemeRight.phonemeText);
-            this.languages = phonemeLeft.languages;
         }
 
         public Phoneme  append(final CharSequence str) {
@@ -132,11 +136,6 @@ public class Rule {
         public CharSequence getPhonemeText() {
             return this.phonemeText;
         }
-
-        public Phoneme join(final Phoneme right) {
-            return new Phoneme(this.phonemeText.toString() + 
right.phonemeText.toString(),
-                               this.languages.restrictTo(right.languages));
-        }
     }
 
     public interface PhonemeExpr {


Reply via email to