[ 
https://issues.apache.org/jira/browse/PROTON-1911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16576549#comment-16576549
 ] 

ASF subversion and git services commented on PROTON-1911:
---------------------------------------------------------

Commit 7eac8b945c8ce90f091126d34cf174e8792fdfc0 in qpid-proton-j's branch 
refs/heads/master from [~tabish121]
[ https://git-wip-us.apache.org/repos/asf?p=qpid-proton-j.git;h=7eac8b9 ]

PROTON-1911 Improve performance of String encodes when possible

Optimize the String encoding by adding new method to WritableBuffer that
allows the buffer implementation to optimize how String values are
encoded to UTF8 bytes based on the buffer type.  Using the Java 8
default implementation support for interface methods add a default
version that behaves as the older releases would.  For the ByteBuffer
wrapper optimize the writes by accessing the buffer data in the most
direct way possible.

Help on this solution provided by Robbie Gemmell and Francesco Nigro

> Performance issue in EncoderImpl#writeRaw(String)
> -------------------------------------------------
>
>                 Key: PROTON-1911
>                 URL: https://issues.apache.org/jira/browse/PROTON-1911
>             Project: Qpid Proton
>          Issue Type: Improvement
>          Components: proton-j
>    Affects Versions: proton-j-0.25.0, proton-j-0.28.0
>            Reporter: Jens Reimann
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: qpid_encode_1.png, qpid_encode_2.png, qpid_encode_3.png, 
> qpid_encode_4.png, strings_encode_after.json, strings_encode_before.json
>
>
> While digging into performance issues in the Eclipse Hono project I noticed a 
> high consumption of CPU time when encoding AMQP messages using proton-j.
> I made a small reproducer and threw the same profiler at it, here are the 
> results:
> As you can see in the attach screenshot (the first is the initial run with 
> the current code) most of the time is consumed in 
> EncoderImpl#writeRaw(String). This due to the fact that is call "put" for 
> every byte it want to encode.
> The following screenshots are from a patched version which uses a small 
> thread local buffer to locally encode the raw data and then flush it to the 
> buffer in bigger chunks.
> Screenshot 3 and 4 show the improve performance, but also show that the 
> memory consumption stays low.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to