[ https://issues.apache.org/jira/browse/DISPATCH-1348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16851992#comment-16851992 ]
ASF GitHub Bot commented on DISPATCH-1348: ------------------------------------------ ted-ross commented on pull request #515: DISPATCH-1348 - Allocate qdr_error_t objects only when necessary. Preā¦ URL: https://github.com/apache/qpid-dispatch/pull/515#discussion_r289042044 ########## File path: src/router_core/error.c ########## @@ -34,19 +34,42 @@ qdr_error_t *qdr_error_from_pn(pn_condition_t *pn) if (!pn) return 0; - qdr_error_t *error = new_qdr_error_t(); - ZERO(error); + qdr_error_t *error = 0; const char *name = pn_condition_get_name(pn); - if (name && *name) + + if (name && *name) { + if (!error) { + error = new_qdr_error_t(); Review comment: I think this would be easier to understand if you only called new_qdr_error_t() in one place, rather than having to repeatedly check if you already created it. Why not extract the data from the pn_error first, determine if a qdr_error is required and if so, create and populate it? ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Save qdr_error_t allocation if not necessary > -------------------------------------------- > > Key: DISPATCH-1348 > URL: https://issues.apache.org/jira/browse/DISPATCH-1348 > Project: Qpid Dispatch > Issue Type: Improvement > Components: Routing Engine > Affects Versions: 1.7.0 > Reporter: Francesco Nigro > Assignee: Ganesh Murthy > Priority: Major > > qdr_error_from_pn on error.c is allocating qdr_error_t on the hot path ie > AMQP_disposition_handler: saving those allocations would reduce CPU usage > (and cache misses) on both core and worker threads, making the router able to > scale better while under load. > Initial tests has shown some improvements under load (ie with core CPU thread > ~97% with the new version and ~99% with master): > 12 pairs master (no lock-free queues, no qdr_error_t fix): 285 K msg/sec > 12 pairs master (no lock-free queues, yes qdr_error_t fix): 402 K msg/sec > 12 pairs lock-free q (no qdr_error_t fix): 311 K msg/sec > 12 pairs lock-free q (yes qdr_error_t fix): 510 K msg/sec -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org