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)