Skip to content

Commit 7d7e486

Browse files
committed
[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
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/codec/trunk@1541234 13f79535-47bb-0310-9956-ffa450edef68
1 parent b91f50f commit 7d7e486

2 files changed

Lines changed: 12 additions & 9 deletions

File tree

src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
import java.util.Set;
3131
import java.util.TreeSet;
3232

33+
import org.apache.commons.codec.language.bm.Languages.LanguageSet;
34+
import org.apache.commons.codec.language.bm.Rule.Phoneme;
35+
3336
/**
3437
* Converts words into potential phonetic representations.
3538
* <p>
@@ -107,8 +110,9 @@ public PhonemeBuilder apply(final Rule.PhonemeExpr phonemeExpr, final int maxPho
107110

108111
EXPR: for (final Rule.Phoneme left : this.phonemes) {
109112
for (final Rule.Phoneme right : phonemeExpr.getPhonemes()) {
110-
final Rule.Phoneme join = left.join(right);
111-
if (!join.getLanguages().isEmpty()) {
113+
LanguageSet languages = left.getLanguages().restrictTo(right.getLanguages());
114+
if (!languages.isEmpty()) {
115+
final Rule.Phoneme join = new Phoneme(left, right, languages);
112116
if (newPhonemes.size() < maxPhonemes) {
113117
newPhonemes.add(join);
114118
} else {

src/main/java/org/apache/commons/codec/language/bm/Rule.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,13 @@ public Phoneme(final CharSequence phonemeText, final Languages.LanguageSet langu
110110
}
111111

112112
public Phoneme(final Phoneme phonemeLeft, final Phoneme phonemeRight) {
113-
this.phonemeText = new StringBuilder(phonemeLeft.phonemeText);
113+
this(phonemeLeft.phonemeText, phonemeLeft.languages);
114+
this.phonemeText.append(phonemeRight.phonemeText);
115+
}
116+
117+
public Phoneme(final Phoneme phonemeLeft, final Phoneme phonemeRight, final Languages.LanguageSet languages) {
118+
this(phonemeLeft.phonemeText, languages);
114119
this.phonemeText.append(phonemeRight.phonemeText);
115-
this.languages = phonemeLeft.languages;
116120
}
117121

118122
public Phoneme append(final CharSequence str) {
@@ -132,11 +136,6 @@ public Iterable<Phoneme> getPhonemes() {
132136
public CharSequence getPhonemeText() {
133137
return this.phonemeText;
134138
}
135-
136-
public Phoneme join(final Phoneme right) {
137-
return new Phoneme(this.phonemeText.toString() + right.phonemeText.toString(),
138-
this.languages.restrictTo(right.languages));
139-
}
140139
}
141140

142141
public interface PhonemeExpr {

0 commit comments

Comments
 (0)