Uploaded image for project: 'Apache Avro'
  1. Apache Avro
  2. AVRO-316

Optiminzing inner loop functions of Avro io

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.3.0
    • java
    • None
    • Reviewed

    Description

      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.

      Attachments

        1. AVRO-316.patch
          10 kB
          Thiruvalluvan M. G.
        2. AVRO-316-test.patch
          7 kB
          Thiruvalluvan M. G.

        Activity

          People

            thiru_mg Thiruvalluvan M. G.
            thiru_mg Thiruvalluvan M. G.
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: