[
https://issues.apache.org/jira/browse/IGNITE-22544?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ivan Bessonov updated IGNITE-22544:
-----------------------------------
Reviewer: Philipp Shergalis
> Commands marshalling appears to be slow
> ---------------------------------------
>
> Key: IGNITE-22544
> URL: https://issues.apache.org/jira/browse/IGNITE-22544
> Project: Ignite
> Issue Type: Improvement
> Reporter: Ivan Bessonov
> Assignee: Ivan Bessonov
> Priority: Major
> Labels: ignite-3, ignite3_performance
> Attachments: IGNITE-22544.patch
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> We should benchmark the way we marshal commands using optimized marshaller
> and make it faster. Some obvious places:
> * byte buffers pool - we can replace queue with a manual implementation of
> Treiber stack, it's trivial and doesn't use as many CAS/volatile operations
> * new serializers are allocated every time, but they can be put into static
> final constants instead, or cached in fields of corresponding factories
> * we can create a serialization factory per group, not per message, this way
> we will remove unnecessary indirection. Group factory can use {{{}switch{}}},
> like in Ignite 2, which would basically lead to static dispatch of
> deserializer constructors and static access to serializers, instead of
> dynamic dispatch (virtual call), which should be noticeably faster
> * profiler might show other simple places, we must also compare
> {{OptimizedMarshaller}} against other serialization algorithms in benchmarks
> EDIT: quick draft attached, it addresses points 1 and 2.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)