[ 
https://issues.apache.org/jira/browse/AVRO-2056?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16092208#comment-16092208
 ] 

Doug Cutting commented on AVRO-2056:
------------------------------------

This may or may not be a mistake. Perhaps the JVM is smart enough to realize 
that this array does not escape and stack allocates it or something. We should 
benchmark this with Perf.java before changing it. (Perf.java currently only 
tests BufferedBinaryEncoder, but it's a one-line change to get it to instead 
benchmark DirectBinaryEncoder.) These encoder & decoder methods are among the 
most performance-critical parts of Avro and should not be altered without 
benchmarking.

> DirectBinaryEncoder Creates Buffer For Each Call To writeDouble
> ---------------------------------------------------------------
>
>                 Key: AVRO-2056
>                 URL: https://issues.apache.org/jira/browse/AVRO-2056
>             Project: Avro
>          Issue Type: Improvement
>          Components: java
>    Affects Versions: 1.7.7, 1.8.2
>            Reporter: BELUGA BEHR
>            Assignee: BELUGA BEHR
>            Priority: Minor
>         Attachments: AVRO-2056.1.patch
>
>
> Each call to {{writeDouble}} creates a new buffer and promptly throws it away 
> even though the class has a re-usable buffer and is used in other methods 
> such as {{writeFloat}}.  Remove this extra buffer.
> {code:title=org.apache.avro.io.DirectBinaryEncoder}
>   // the buffer is used for writing floats, doubles, and large longs.
>   private final byte[] buf = new byte[12];
>   @Override
>   public void writeFloat(float f) throws IOException {
>     int len = BinaryData.encodeFloat(f, buf, 0);
>     out.write(buf, 0, len);
>   }
>   @Override
>   public void writeDouble(double d) throws IOException {
>     byte[] buf = new byte[8];
>     int len = BinaryData.encodeDouble(d, buf, 0);
>     out.write(buf, 0, len);
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to