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

Douglas Kaminsky updated AVRO-985:
----------------------------------

    Affects Version/s: 1.6.1
    
> Remove byte-by-byte copying in RecordBuilderBase.defaultValue
> -------------------------------------------------------------
>
>                 Key: AVRO-985
>                 URL: https://issues.apache.org/jira/browse/AVRO-985
>             Project: Avro
>          Issue Type: Improvement
>    Affects Versions: 1.6.1
>            Reporter: Douglas Kaminsky
>
> In one section of RecordBuilderBase.defaultValue(Field) (quoted below) a 
> bytewise copy of the default object is created based on the JSON value 
> provided. However, this is an extremely inefficient operation and causes 
> large slowdowns when building large object sets, including latency spikes 
> when the binary encoder flushes. 
> A simple workaround for a majority of cases would be to have a separate code 
> path for "primitives" (fixed, string, boolean, int, double, enum, float, 
> bytes) that allows direct creation rather than a full bytewise copy (and 
> subsequent deep copy).
> *_RecordBuilderBase.java_*:
> {code}
>     // If not cached, get the default Java value by encoding the default JSON
>     // value and then decoding it:
>     if (defaultValue == null) {
>       ByteArrayOutputStream baos = new ByteArrayOutputStream();
>       encoder = EncoderFactory.get().binaryEncoder(baos, encoder);
>       ResolvingGrammarGenerator.encode(
>           encoder, field.schema(), defaultJsonValue);
>       encoder.flush();
>       decoder = DecoderFactory.get().binaryDecoder(
>           baos.toByteArray(), decoder);
>       defaultValue = new GenericDatumReader(
>           field.schema()).read(null, decoder);
>       defaultSchemaValues.putIfAbsent(field.pos(), defaultValue);
>     }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to