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

Vladislav Pyatkov reassigned IGNITE-25327:
------------------------------------------

    Assignee: Vladislav Pyatkov

> Avoid copy bytes in tuple comparator
> ------------------------------------
>
>                 Key: IGNITE-25327
>                 URL: https://issues.apache.org/jira/browse/IGNITE-25327
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Vladislav Pyatkov
>            Assignee: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-3
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> h3. Motivation
> We copy bytes from ByteBuffer each time when comparing any field in a tuple. 
> The base is
> {code:title=BinaryTupleParser}
>     private byte[] getBytes(int begin, int end) {
>         byte[] bytes = new byte[end - begin];
>         buffer.duplicate().position(begin).limit(end).get(bytes);
>         return bytes;
>     }
> {code}
> where we do a copy from the byte buffer. Then we compare fields by full 
> deserialization value 
> {{BinaryTupleComparatorUtils#compareFieldValue}}.
> We can avoid copying if we can compare the field data without deserialization 
> in ByteBuffer directly using offset.
> h3. Implementation notes
> For extracting bytes from off-heap memory, use GridUnsafe. It ought to be 
> more productive than using DirectByteBuffer.
> Fix it for {{BinaryTupleComparator}} and {{PartialBinaryTupleMatcher}}.
> h3. Definition of done
> Do a comparison without deserialization for all types for which it is 
> advisable.
> Binary comparison is certainly useful for {{STRING}} and {{BYTES}}.



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

Reply via email to