[ 
https://issues.apache.org/jira/browse/AVRO-695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sachin Goyal updated AVRO-695:
------------------------------
    Attachment: avro_circular_refs7.patch
                PERF_8000_cycles.zip

avro_circular_refs7.patch fixes the above.

Performance has been checked by running Perf.java for 8k cycles 
(PERF_8000_cycles.zip contains a small Tcl utility to compare two outputs of 
Perf.java)
{code}
% tclsh perf_processor.tcl all/orig.txt all/circular.txt
Finding tests where time is 1.05 times more than the original
                               orig.txt    circular.txt
GenericWrite:                  34552 ms     37010 ms
ReflectNestedObjectArrayWrite: 51701 ms     54562 ms
LongRead:                      12508 ms     16907 ms

% tclsh perf_processor.tcl reduced/orig.txt reduced/circular.txt
Finding tests where time is 1.05 times more than the original
            orig.txt  circular.txt
GenericWrite: 33359 ms   35552 ms

% tclsh perf_processor.tcl reduced_further/orig.txt reduced_further/circular.txt
Finding tests where time is 1.05 times more than the original
{code}
So the Perf.java shows irregular performance degradation and that too varies 
only in small numbers.

> Cycle Reference Support
> -----------------------
>
>                 Key: AVRO-695
>                 URL: https://issues.apache.org/jira/browse/AVRO-695
>             Project: Avro
>          Issue Type: New Feature
>          Components: spec
>    Affects Versions: 1.7.6
>            Reporter: Moustapha Cherri
>         Attachments: PERF_8000_cycles.zip, avro-1.4.1-cycle.patch.gz, 
> avro-1.4.1-cycle.patch.gz, avro_circular_references.zip, 
> avro_circular_refs6.patch, avro_circular_refs7.patch, 
> avro_circular_refs_2014_06_14.zip, 
> circular_refs_and_nonstring_map_keys_2014_06_25.zip
>
>   Original Estimate: 672h
>  Remaining Estimate: 672h
>
> This is a proposed implementation to add cycle reference support to Avro. It 
> basically introduce a new type named Cycle. Cycles contains a string 
> representing the path to the other reference.
> For example if we have an object of type Message that have a member named 
> previous with type Message too. If we have have this hierarchy:
> message
>   previous : message2
> message2
>   previous : message2
> When serializing the cycle path for "message2.previous" will be "previous".
> The implementation depend on ANTLR to evaluate those cycle at read time to 
> resolve them. I used ANTLR 3.2. This dependency is not mandated; I just used 
> ANTLR to speed thing up. I kept in this implementation the generated code 
> from ANTLR though this should not be the case as this should be generated 
> during the build. I only updated the Java code.
> I did not make full unit testing but you can find "avrotest.Main" class that 
> can be used a preliminary test.
> Please do not hesitate to contact me for further clarification if this seems 
> interresting.
> Best regards,
> Moustapha Cherri



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

Reply via email to