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

ASF GitHub Bot commented on BOOKKEEPER-1075:
--------------------------------------------

GitHub user sijie opened a pull request:

    https://github.com/apache/bookkeeper/pull/162

    BOOKKEEPER-1075: BK LedgerMetadata: more memory-efficient parsing of configs

    It is the contribution from Alex Yarmula
    
    commit 9d9d7dd26235a9beda4421b7bed750fea1789076
    Author: Alex Yarmula <[email protected]>
    Date: Wed Sep 23 05:57:30 2015 -0700
    
    BK LedgerMetadata: more memory-efficient parsing of configs
    Looking at the most prevalent client-side memory allocations, I noticed 
that we allocate 4KB every time we open a ledger. This is caused by allocating 
a 4KB buffer (in TextFormat.toStringBuilder) to account for the maximum 
possible Protobufs message, which is unnecessary in our case: we know the exact 
size of the metadata ( << 500 B) and don't need to allocate more.
    TextFormat.merge(Readable, Message.Builder) is the current method we use. 
This changes to use TextFormat.merge(CharSequence, Message.Builder), which 
avoids the extra 4K allocation conversion + an extra StringBuilder.
    
    RB_ID=745700

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/sijie/bookkeeper bk_ledger_metadata_efficiency

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/bookkeeper/pull/162.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #162
    
----

----


> BK LedgerMetadata: more memory-efficient parsing of configs
> -----------------------------------------------------------
>
>                 Key: BOOKKEEPER-1075
>                 URL: https://issues.apache.org/jira/browse/BOOKKEEPER-1075
>             Project: Bookkeeper
>          Issue Type: Bug
>          Components: bookkeeper-client
>            Reporter: Sijie Guo
>            Assignee: Leigh Stewart
>             Fix For: 4.5.0
>
>
> Looking at the most prevalent client-side memory allocations, I noticed that 
> we allocate 4KB every time we open a ledger. This is caused by allocating a 
> 4KB buffer (in TextFormat.toStringBuilder) to account for the maximum 
> possible Protobufs message, which is unnecessary in our case: we know the 
> exact size of the metadata ( << 500 B) and don't need to allocate more.
>     TextFormat.merge(Readable, Message.Builder) is the current method we use. 
> This changes to use TextFormat.merge(CharSequence, Message.Builder), which 
> avoids the extra 4K allocation conversion + an extra StringBuilder.
> It is the contribution from Alex Yarmula
> {quote}
> commit 9d9d7dd26235a9beda4421b7bed750fea1789076
> Author: Alex Yarmula <[email protected]>
> Date:   Wed Sep 23 05:57:30 2015 -0700
>     BK LedgerMetadata: more memory-efficient parsing of configs
>     Looking at the most prevalent client-side memory allocations, I noticed 
> that we allocate 4KB every time we open a ledger. This is caused by 
> allocating a 4KB buffer (in TextFormat.toStringBuilder) to account for the 
> maximum possible Protobufs message, which is unnecessary in our case: we know 
> the exact size of the metadata ( << 500 B) and don't need to allocate more.
>     TextFormat.merge(Readable, Message.Builder) is the current method we use. 
> This changes to use TextFormat.merge(CharSequence, Message.Builder), which 
> avoids the extra 4K allocation conversion + an extra StringBuilder.
>     RB_ID=745700
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to