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
observations.
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
pn_message_t)
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
(v6.3.4#6332)