You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2018/08/10 19:02:00 UTC

[jira] [Commented] (PROTON-1911) improve performance of String encoding

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

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

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

PROTON-1911: tweak to restore previous exception behaviour


> improve performance of String encoding
> --------------------------------------
>
>                 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
>             Fix For: proton-j-0.29.0
>
>         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
>
>
> Testing has highlighted that the encoding of Strings within messages isn't very efficient, due to the manner in which the output is written to the destination buffer. By expanding WritableBuffer to allow writing a String directly, and improving the String encoding implementation therein we can improve performance of String encoding.  Leveraging PROTON-1913 we can also provide the previous impl as a default fallback to avoid breaking compatibility with existing WritableBuffer implementations that lack one.
> ================
> Original description:
> 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-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org