ICU-8476 optimize Normalizer2.normalize(): Do not construct a new String if the src is a String and is already normalized

X-SVN-Rev: 32562
This commit is contained in:
Markus Scherer 2012-10-08 22:59:19 +00:00
parent b042e33ee1
commit dd29ba28aa

View file

@ -204,7 +204,17 @@ public abstract class Normalizer2 {
* @stable ICU 4.4
*/
public String normalize(CharSequence src) {
return normalize(src, new StringBuilder()).toString();
if(src instanceof String) {
// Fastpath: Do not construct a new String if the src is a String
// and is already normalized.
int spanLength=spanQuickCheckYes(src);
if(spanLength==src.length()) {
return (String)src;
}
StringBuilder sb=new StringBuilder(src.length()).append(src, 0, spanLength);
return normalizeSecondAndAppend(sb, src.subSequence(spanLength, src.length())).toString();
}
return normalize(src, new StringBuilder(src.length())).toString();
}
/**