You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by "Brian Minchau (JIRA)" <xa...@xml.apache.org> on 2005/04/06 07:26:17 UTC

[jira] Updated: (XALANJ-2077) Serializer's Encodings class methods slow: gettLastPrintable() convertJava2MimeEncoding()

     [ http://issues.apache.org/jira/browse/XALANJ-2077?page=history ]

Brian Minchau updated XALANJ-2077:
----------------------------------

    reviewer: zongaro@ca.ibm.com

Marking Henry Z. as the reviewer, per the Xalan JIRA meeting on April 5, 2005. This is just for consistency, because Henry has already reviewed it.

> Serializer's Encodings class methods slow: gettLastPrintable() convertJava2MimeEncoding()
> -----------------------------------------------------------------------------------------
>
>          Key: XALANJ-2077
>          URL: http://issues.apache.org/jira/browse/XALANJ-2077
>      Project: XalanJ2
>         Type: Improvement
>   Components: Serialization
>     Reporter: Brian Minchau
>     Assignee: Brian Minchau
>     Priority: Minor
>  Attachments: serializer.Encodings.patch1.txt, serializer.Encodings.patch2.txt
>
> The serializer's methods:
>     org.apache.xml.serializer.Encodings.getLastPrintable(String encoding)
>     org.apache.xml.serializer.Encodings.convertJava2MimeEncoding(String encoding)
> are both slower than they need to be.
> For some reason the java.lang.String.toUpperCase() methods used in each of
> these seems to be quite slow.
> Code like this seems to run twice as fast as calling String.toUpperCase():
>     static private String toUpperCaseFast(final String s) {
>     	boolean different = false;
>     	final int mx = s.length();
> 		char[] chars = new char[mx];
>     	for (int i=0; i < mx; i++) {
>     		char ch = s.charAt(i);
>     		if (Character.isLowerCase(ch)) {
>     			ch = Character.toUpperCase(ch);
>     			different = true; // the uppercased String is different
>     		}
>     		chars[i] = ch;
>     	}
>     	
>     	// A little optimization, don't call sb.toString() if
>     	// the uppercased string is the same as the input string.
>     	final String upper;
>     	if (different) 
>     		upper = chars.toString();
>     	else
>     		upper = s;
>     		
>     	return upper;
>     }
> --------------------------------
> Perhaps the official toUpperCase() method is Locale sensitive, although it doesn't need 
> to be because the encoding supported are IANA-CHARSETS
> (Internet Assigned Numbers Authority) Official Names for Character Sets, ed. Keld Simonsen et al. (See http://www.iana.org/assignments/character-sets.)
> These names are from the character set of pritable US-ASCII characters, so perhaps even the methods called in the method above, Character.isLowerCase(ch) and Character.toUpperCase(ch) can be converted into faster bit manimpulation.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org