[ 
https://issues.apache.org/jira/browse/THRIFT-765?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12862456#action_12862456
 ] 

Doug Cutting commented on THRIFT-765:
-------------------------------------

Does using a switch instead of an 'if else' in decode help any?

Another thing to try might be to use a char[] buffer instead of StringBuffer 
and directly implement UTF-16 coding.  Codepoints less than 0x10000 are encoded 
as one Java char.  Codepoints over that are encoded in two chars, with the 
first containing 0xD8 plus the high-order ten bits of codepoint minus 0x10000, 
and the second 0xDC plus the low-order ten bits of codepoint minus 0x10000.

The one-, two- and three- byte cases of UTF-8 all produce characters less than 
0x10000 and so will always generate a single char.  And the four-byte case of 
UTF-8 will only and always generate a character greater than or equal to 
0x10000.  So you don't need to test that if you combine the UTF-16 encoding 
with the UTF-8 decoding.

> Improved string encoding and decoding performance
> -------------------------------------------------
>
>                 Key: THRIFT-765
>                 URL: https://issues.apache.org/jira/browse/THRIFT-765
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Library (Java)
>    Affects Versions: 0.2
>            Reporter: Bryan Duxbury
>            Assignee: Bryan Duxbury
>             Fix For: 0.3
>
>         Attachments: thrift-765-redux.patch, thrift-765.patch
>
>
> One of the most consistent time-consuming spots of Thrift serialization and 
> deserialization is string encoding. For some inscrutable reason, 
> String.getBytes("UTF-8") is slow. 
> However, it's recently been brought to my attention that DataOutputStream's 
> writeUTF method has a faster implementation of UTF-8 encoding and decoding. 
> We should use this style of encoding.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to