On Jan 16, 2014, at 7:08 PM, Xueming Shen <xueming.s...@oracle.com> wrote:
> Hi,
> 
> The proposed changeset is to improve the performance (both speed and memory
> usage) of String.toLowerCase/toUpperCase, by
> 
> (1) to separate the "most likely" use scenario (non supplementary character, 
> no special
> case mapping handling) into simple/quick iteration loop code path
> (2) to use the package private constructor String(char[], boolean) to avoid 
> unnecessary
> target char[] copy in fast-path case.
> (3) some tiny code cleanup.
> 
> Since it's supposed to be a simple/quick round of code cleanup, I did not go 
> too far to
> optimize the supplementary/special mapping code.
> 
> The webrev is
> 
> http://cr.openjdk.java.net/~sherman/8032012/
> 

Some quick comments.

In String.toLowerCase:

- it would be nice to get rid of the pseudo goto using the "scan" labelled 
block.

- there is no need for the "localeDependent" local variable.

- you might be able to optimize by doing (could depend on the answer to the 
next point):

 int c = (int)value[i];
 int lc = Character.toLowerCase(c);
 if (.....) { result[i] = (char)lc; } else { return toLowerCaseEx(result, i, 
locale, localeDependent); }

- Do you need to check ERROR for the result of toLowerCase?

2586             if (c == Character.ERROR ||

Paul.

Reply via email to