qpid-proton mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Cliff Jansen (JIRA)" <j...@apache.org>
Subject [jira] [Created] (PROTON-998) [C++ binding] Restore performance with lazy message creation and reuse
Date Wed, 16 Sep 2015 16:24:46 GMT
Cliff Jansen created PROTON-998:

             Summary: [C++ binding] Restore performance with lazy message creation and reuse
                 Key: PROTON-998
                 URL: https://issues.apache.org/jira/browse/PROTON-998
             Project: Qpid Proton
          Issue Type: Bug
    Affects Versions: 0.10.1
         Environment: C++ reactive binding
            Reporter: Cliff Jansen
            Assignee: Cliff Jansen
             Fix For: 0.10.1

The C++ binding has become several times slower over time.
Investigating this performance degradation yields the following

Creating and destroying some Proton C objects is expensive.

A pn_data_t requires 7 separate malloc and free calls.

A pn_message_t requires almost 60 (there are 7 pn_data_t members in a

The cost set-up and tear down can exceed the use cost, so re-use can
provide a serious performance win.

As a corollary, no Proton object should be included in a C++ messaging
event for the 'just in case' scenario, since so many are ignored by
the application.

Sample performance numbers for loopback messages on a 4 core 8 thread laptop:

62,000 msgs/sec:   unused message per event, except during on_message (current code)

135,000 msgs/sec:  lazy message creation and destruction at on_message

190,000 msgs/sec:  re-use pn_message_t object for all inbound messages on a connection

This message was sent by Atlassian JIRA

View raw message