Konstantin, On 9/23/14 10:10 AM, Konstantin Kolinko wrote: > 2014-09-23 17:09 GMT+04:00 <[email protected]>: >> Author: schultz >> Date: Tue Sep 23 13:09:42 2014 >> New Revision: 1627000 >> >> URL: http://svn.apache.org/r1627000 >> Log: >> Micro optimization. >> >> Modified: >> tomcat/trunk/java/org/apache/tomcat/util/buf/HexUtils.java >> >> Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/HexUtils.java >> URL: >> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/buf/HexUtils.java?rev=1627000&r1=1626999&r2=1627000&view=diff >> ============================================================================== >> --- tomcat/trunk/java/org/apache/tomcat/util/buf/HexUtils.java (original) >> +++ tomcat/trunk/java/org/apache/tomcat/util/buf/HexUtils.java Tue Sep 23 >> 13:09:42 2014 >> @@ -75,10 +75,12 @@ public final class HexUtils { >> if (null == bytes) { >> return null; >> } >> + final char[] hex = HexUtils.hex; >> + final int length = bytes.length; > > The above change does not make sense to me. > > As HexUtils.hex and bytes.length are themselves final fields, it is up > to Java JVM to inline them. I see no need to define explicit local > fields for them.
Seems there are major objections to small performance improvements. I'll
revert the change.
>> - StringBuilder sb = new StringBuilder(bytes.length << 1);
>> + StringBuilder sb = new StringBuilder(length << 1);
>>
>> - for(int i = 0; i < bytes.length; ++i) {
>> + for(int i = 0; i < length; ++i) {
>> sb.append(hex[(bytes[i] & 0xf0) >> 4])
>> .append(hex[(bytes[i] & 0x0f)])
>> ;
>> @@ -94,8 +96,9 @@ public final class HexUtils {
>> }
>>
>> char[] inputChars = input.toCharArray();
>> - byte[] result = new byte[input.length() >> 1];
>> - for (int i = 0; i < result.length; i++) {
>> + final int length = input.length() >> 1;
>> + byte[] result = new byte[length];
>> + for (int i = 0; i < length; i++) {
>
> This fromHexString() method (where the above lines are) is used by
> test code only.
>
> The usefulness of this fromHexString() method is somewhat limited, as
> it does not check correctness of its arguments. If input string has
> even number of chars, the last char will be silently ignored. If some
> characters are non-hex, it will silently produce bogus results.
This method will become more useful when bug
https://issues.apache.org/bugzilla/show_bug.cgi?id=56403 is implemented.
Thanks for the review of the code; we'll make appropriate modifications.
-chris
signature.asc
Description: OpenPGP digital signature
