[
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)