[ https://issues.apache.org/jira/browse/PROTON-591?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14017126#comment-14017126 ]
ASF subversion and git services commented on PROTON-591: -------------------------------------------------------- Commit 1599793 from [~astitcher] in branch 'proton/trunk' [ https://svn.apache.org/r1599793 ] PROTON-591, PROTON-590: Change frame dispatch to use switch statement - Rather than an explicit function table - This reduces the per connection memory use significantly - Fixes a possible crash if Proton receives an unknown performative > There are two large, mostly empty tables used for dispatching incoming frames > ----------------------------------------------------------------------------- > > Key: PROTON-591 > URL: https://issues.apache.org/jira/browse/PROTON-591 > Project: Qpid Proton > Issue Type: Improvement > Components: proton-c > Affects Versions: 0.7 > Reporter: Andrew Stitcher > Assignee: Andrew Stitcher > > The frame dispatch for the raw amqp and sasl layers use a table with 256 > entries to lookup the handling routine for the incoming performative. > There are only 14 different performatives and there is a separate table for > the raw amqp and the sasl layer so there are in total 498 empty table entries > and only 14 actual entries. > Currently we don't need to add performatives on the fly so there is no real > need for a table that can be altered as in the current design. We can save a > lot of space and somewhat simplify the code by using a dumb > {code} switch(code) { ...case OPEN: ... break; }; {code} construct for the > dispatch. > On a 64 bit machine this saves about 4k per connection and on a 32 bit around > 2k per connection (or only 1k if the SASL layer is disabled) -- This message was sent by Atlassian JIRA (v6.2#6252)