Optiminzing inner loop functions of Avro io
-------------------------------------------

                 Key: AVRO-316
                 URL: https://issues.apache.org/jira/browse/AVRO-316
             Project: Avro
          Issue Type: Improvement
            Reporter: Thiruvalluvan M. G.
            Assignee: Thiruvalluvan M. G.


The methods advance() and pushProduction() of org.apache.avro.io.parsing.Parser 
class are invoked at least once per read/write call on ValidatingDecoder, 
ResolvingDecoder and ValidatingEncoder. Any optimization in these functions 
will improve overall performance when using these classes.

Try org.apacge.avro.io.Perf -V to see the effect of this patch on the 
performance. On my machine it gives about 5 to 8% improvement.

The optimizations are:
   - Reorder the code within advance() so that the most frequent paths involve 
minimal comparisons.
   - Repleace Symbol.CONTINUE with null to indicate that next symbol on the 
stack needs to be looked at.
   - Get rid of a parameter to pushProduction. This parameter was used only in 
one call site of that function; others pass null. Refactored the code so that 
these invocations do not pay for that piece of logic that they don't use.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to