[
https://issues.apache.org/jira/browse/IGNITE-13856?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ilya Kasnacheev updated IGNITE-13856:
-------------------------------------
Ignite Flags: Release Notes Required
[~kazakov] please provide release note.
> Superlinear performance of DirectByteBufferStreamImplV2.writeMessage(msg,
> writer)
> ---------------------------------------------------------------------------------
>
> Key: IGNITE-13856
> URL: https://issues.apache.org/jira/browse/IGNITE-13856
> Project: Ignite
> Issue Type: Improvement
> Components: binary
> Affects Versions: 2.9
> Reporter: Ilya Kazakov
> Assignee: Ilya Kazakov
> Priority: Major
> Fix For: 2.10
>
> Attachments: LongStringSQL.java
>
> Time Spent: 1h 10m
> Remaining Estimate: 0h
>
> {code:java}
> @Override public void writeMessage(Message msg, MessageWriter writer) {
> if (msg != null) {
> if (buf.hasRemaining()) {
> try {
> writer.beforeInnerMessageWrite()
> writer.setCurrentWriteClass(msg.getClass());
> lastFinished = msg.writeTo(buf, writer);
> }
> finally {
> writer.afterInnerMessageWrite(lastFinished);
> }
> }
> }
> }{code}
> It is going to do multiple invocations of msg.writeTo(). If msg is
> GridH2String, it will to val.getBytes() on every invocation of writeTo(),
> leading to spiking of CPU and RAM usage.
> We should change this module to make sure that all serialization happens only
> once.
>
> Reproducer is attached. If we increase string size in 10 times, then the
> execution time increases more than 10 times.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)