[ 
https://issues.apache.org/jira/browse/IGNITE-29089?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikolay Izhikov updated IGNITE-29089:
-------------------------------------
    Description: 
Currently, useless byte array creation happens during each marshalling.

 
{noformat}
 {noformat}
ClientUtils {

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

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

}

```

 

This call routes to

```
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(); 
        }

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

  was:
Currently, useless byte array creation happens during each marshalling.

 

```

ClientUtils {

....
    /** Write Ignite binary object to output stream. */
    void writeObject(BinaryOutputStream out, Object obj) {
         out.writeByteArray(marsh.marshal(obj));
    }
}

```

 

This call routes to

```
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();
        }
    }
```
 
which create arrayCopy and writes it to BinaryOutputStream right away.
We can simplify this and improve memory allocation here.


> Get rid of useless byte array creation during ThinClient marshalling
> --------------------------------------------------------------------
>
>                 Key: IGNITE-29089
>                 URL: https://issues.apache.org/jira/browse/IGNITE-29089
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Nikolay Izhikov
>            Assignee: Nikolay Izhikov
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, useless byte array creation happens during each marshalling.
>  
> {noformat}
>  {noformat}
> ClientUtils {
> ....
>     /** Write Ignite binary object to output stream. */
>     void writeObject(BinaryOutputStream out, Object obj)
> {          out.writeByteArray(marsh.marshal(obj));     }
> }
> ```
>  
> This call routes to
> ```
> 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();         }
>     }
> ```
>  
> 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