Craig Peterson created THRIFT-2941:
--------------------------------------

             Summary: Convert processor to use switch instead of map
                 Key: THRIFT-2941
                 URL: https://issues.apache.org/jira/browse/THRIFT-2941
             Project: Thrift
          Issue Type: Improvement
          Components: Go - Compiler
            Reporter: Craig Peterson


We are using a special protocol extension to insert auxiliary tracking data 
into our method names on certain services. Our implementation works by creating 
a special Processor Wrapper and creating a new Handler/Processor for each 
request. 

The current implementation of the generated handler makes this rather 
expensive, as a new map is created each time you create a processor. I propose 
reworking the generated processor to use a switch structure for dispatch rather 
than the current map-based solution.

A summary of the differences before and after for a small example can be found 
in this gist: 
https://gist.github.com/captncraig/e2bc7e7d1a0cb2c8127b#file-foo-thrift

I ran benchmarks and the baseline performance (both in time and allocations) of 
the processor seem almost exactly the same after my changes. My 
modified/wrapped processor however is able to perform much faster and with less 
memory with these changes. 

No application code should need to be changed unless it was interacting with 
the exported processor map functions (which I suspect should have been private 
all along).

Working on a patch right now.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to