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.