[ https://issues.apache.org/jira/browse/IGNITE-13856?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17255341#comment-17255341 ]
Ilya Kazakov commented on IGNITE-13856: --------------------------------------- [~ilyak] I have implemented your advice, if I understood you correctly. > 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 > Attachments: LongStringSQL.java > > Time Spent: 1h > 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)