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

Semyon Danilov updated IGNITE-16260:
------------------------------------
    Description: 
Currently, JDK serialization is quite faster than Ignite's user object 
serialization (AllTypesMessage object):

 
{code:java}
Benchmark                                              Mode  Cnt        Score   
    Error  Units
SerializationMicroBenchmark.jdk_serialization          avgt   15  1395605.836 ± 
56061.652  ns/op
SerializationMicroBenchmark.user_object_serialization  avgt   15  3913206.848 ± 
78565.118  ns/op{code}
During the profiling and benchmarking, I've managed to get these results (I 
also benchmark against kryo), be aware of the change of time unit:

 

 
{code:java}
Benchmark                                              Mode  Cnt     Score     
Error  Units
SerializationMicroBenchmark.jdk_serialization          avgt   15  1408.451 ±  
52.326  us/op
SerializationMicroBenchmark.kryo_serialization         avgt   15  2052.704 ± 
102.327  us/op
SerializationMicroBenchmark.user_object_serialization  avgt   15  1963.285 ±  
65.170  us/op {code}
For simple objects (three primitive fields) I have following results:
{code:java}
Benchmark                                              Mode  Cnt    Score    
Error  Units
SerializationMicroBenchmark.jdk_serialization          avgt   15  948.584 ± 
80.484  ns/op
SerializationMicroBenchmark.kryo_serialization         avgt   15  588.102 ± 
13.152  ns/op
SerializationMicroBenchmark.user_object_serialization  avgt   15  636.171 ± 
66.541  ns/op {code}
So it seems like JDK serialization is still better for complex objects, but not 
for simple objects. And kryo is the best on simple objects.

See the branch associated with this issue to inspect the performance tweaks

 

> User object serialization performance optimization
> --------------------------------------------------
>
>                 Key: IGNITE-16260
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16260
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Semyon Danilov
>            Priority: Major
>              Labels: ignite-3
>
> Currently, JDK serialization is quite faster than Ignite's user object 
> serialization (AllTypesMessage object):
>  
> {code:java}
> Benchmark                                              Mode  Cnt        Score 
>       Error  Units
> SerializationMicroBenchmark.jdk_serialization          avgt   15  1395605.836 
> ± 56061.652  ns/op
> SerializationMicroBenchmark.user_object_serialization  avgt   15  3913206.848 
> ± 78565.118  ns/op{code}
> During the profiling and benchmarking, I've managed to get these results (I 
> also benchmark against kryo), be aware of the change of time unit:
>  
>  
> {code:java}
> Benchmark                                              Mode  Cnt     Score    
>  Error  Units
> SerializationMicroBenchmark.jdk_serialization          avgt   15  1408.451 ±  
> 52.326  us/op
> SerializationMicroBenchmark.kryo_serialization         avgt   15  2052.704 ± 
> 102.327  us/op
> SerializationMicroBenchmark.user_object_serialization  avgt   15  1963.285 ±  
> 65.170  us/op {code}
> For simple objects (three primitive fields) I have following results:
> {code:java}
> Benchmark                                              Mode  Cnt    Score    
> Error  Units
> SerializationMicroBenchmark.jdk_serialization          avgt   15  948.584 ± 
> 80.484  ns/op
> SerializationMicroBenchmark.kryo_serialization         avgt   15  588.102 ± 
> 13.152  ns/op
> SerializationMicroBenchmark.user_object_serialization  avgt   15  636.171 ± 
> 66.541  ns/op {code}
> So it seems like JDK serialization is still better for complex objects, but 
> not for simple objects. And kryo is the best on simple objects.
> See the branch associated with this issue to inspect the performance tweaks
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to