Nikolay Izhikov created IGNITE-29094:
----------------------------------------

             Summary: Get rid of useless byte array creation during thin jdbc 
request
                 Key: IGNITE-29094
                 URL: https://issues.apache.org/jira/browse/IGNITE-29094
             Project: Ignite
          Issue Type: Improvement
            Reporter: Nikolay Izhikov
            Assignee: Nikolay Izhikov
             Fix For: 2.19


Currently, useless byte array creation happens during each marshalling.

 
{noformat}
ClientUtils {

....
    /** Write Ignite binary object to output stream. */
    void writeObject(BinaryOutputStream out, Object obj)

    {          
         out.writeByteArray(marsh.marshal(obj));     
    }
}

 {noformat}

This call routes to

{noformat}
GridBinaryMarshaller {
    public byte[] marshal(@Nullable Object obj, boolean failIfUnregistered) 
throws BinaryObjectException

{         
    if (obj == null)             
         return new byte[] \\{ NULL };

        try (BinaryWriterEx writer = BinaryUtils.binariesFactory.writer(ctx, 
failIfUnregistered))
        {             
             writer.marshal(obj);             
             return writer.out().arrayCopy();         
         }

    }
{noformat}
 
which create arrayCopy and writes it to BinaryOutputStream right away.
We can simplify this and improve memory allocation here.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to