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

Doug Cutting commented on AVRO-1282:
------------------------------------

There was a '==========' in the patch that I had to remove to get it to 
compile, and a print statement I removed.

Here are the results I see with the latest patch:

Before:
{code}
                    test name     time    M entries/sec   M bytes/sec  
bytes/cycle
             ReflectArrayRead:  23522 ms       8.503        34.011       1000006
            ReflectArrayWrite:  18698 ms      10.696        42.785       1000006
   ReflectSmallFloatArrayRead:  58845 ms       3.399        15.294       1125004
  ReflectSmallFloatArrayWrite:  29458 ms       6.789        30.551       1125004
  ReflectMediumFloatArrayRead:  22690 ms       8.814        35.610       1010003
 ReflectMediumFloatArrayWrite:  19735 ms      10.134        40.941       1010003
            ReflectRecordRead:  46990 ms       0.709        43.536       2557239
           ReflectRecordWrite:  42195 ms       0.790        48.483       2557239
{code}

After:
{code}
                    test name     time    M entries/sec   M bytes/sec  
bytes/cycle
             ReflectArrayRead:   9099 ms      21.978        87.913       1000006
            ReflectArrayWrite:   3677 ms      54.388       217.552       1000006
   ReflectSmallFloatArrayRead:  20353 ms       9.826        44.219       1125004
  ReflectSmallFloatArrayWrite:  10164 ms      19.676        88.541       1125004
  ReflectMediumFloatArrayRead:   7869 ms      25.414       102.672       1010003
 ReflectMediumFloatArrayWrite:   4719 ms      42.379       171.213       1010003
            ReflectRecordRead:  14973 ms       2.226       136.629       2557239
           ReflectRecordWrite:  11479 ms       2.904       178.218       2557239
{code}

In general, around a 3x speedup.  Nice!

(This is Java 7 on my laptop, 64-bit Linux.)
                
> Make use of the sun.misc.Unsafe class during serialization if a JDK supports 
> it
> -------------------------------------------------------------------------------
>
>                 Key: AVRO-1282
>                 URL: https://issues.apache.org/jira/browse/AVRO-1282
>             Project: Avro
>          Issue Type: Improvement
>          Components: java
>    Affects Versions: 1.7.4
>            Reporter: Leo Romanoff
>            Priority: Minor
>         Attachments: avro-1282-v1.patch, avro-1282-v2.patch, 
> avro-1282-v3.patch, avro-1282-v4.patch, avro-1282-v5.patch, avro-1282-v6.patch
>
>
> Unsafe can be used to significantly speed up serialization process, if a JDK 
> implementation supports java.misc.Unsafe properly. Most JDKs running on PCs 
> support it. Some platforms like Android lack a proper support for Unsafe yet.
> There are two possibilities to use Unsafe for serialization:
> 1) Very quick access to the fields of objects. It is way faster than with the 
> reflection-based approach using Field.get/set
> 2) Input and Output streams can be using Unsafe to perform very quick 
> input/output.
>  
> 3) More over, Unsafe makes it possible to serialize to/deserialize from 
> off-heap memory directly and very quickly, without any intermediate buffers 
> allocated on heap. There is virtually no overhead compared to the usual byte 
> arrays.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to