ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Igor Sapego (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (IGNITE-2946) CPP: Method GetNext() of the cursor classes should be optimized.
Date Tue, 30 Aug 2016 13:06:20 GMT

    [ https://issues.apache.org/jira/browse/IGNITE-2946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15448963#comment-15448963

Igor Sapego commented on IGNITE-2946:


1. Good catch. I believe, .NET changes have been lost during re-merge.
2. Well, it's either that or manual new/delete, as we can not use auto pointers in exported
class. Maybe we should add our own implementation of auto pointers. Changed for manual new/delete
for now.
3. If we do that this way this is going to invalidate all {{QueryFieldsRow}}s, which is breaking
backward compatibility.
4. I prefer it in a separate class as it more clean to me. If we put it into {{QueryImpl}}
itself then we would need to re-create stream and reader every time we get a new memory chunk,
which is 2 memory allocations instead of 1. But I agree with the performance concerns. I've
changed shared pointers to plain references. This seem to be ok as the lifetime of batches
is <= lifetime of the cursors.

Ideally there should be no heap allocations at all after we constructed a QueryImpl instance.
The only exclusion to this rule is memory chunk, which should be allocated 1 time on first
batch access.

As I said, this is going to break backward compatibility. In this case every {{GetNext}} call
on cursor may invalidate all existing query rows. If we are fine with that then I can do that.

> CPP: Method GetNext() of the cursor classes should be optimized.
> ----------------------------------------------------------------
>                 Key: IGNITE-2946
>                 URL: https://issues.apache.org/jira/browse/IGNITE-2946
>             Project: Ignite
>          Issue Type: Task
>          Components: platforms
>    Affects Versions: 1.5.0.final
>            Reporter: Igor Sapego
>            Assignee: Igor Sapego
>              Labels: cpp, performance
>             Fix For: 1.8
> Current implementation of the GetNext() method of the cursor classes is too slow and
should be optimized.

This message was sent by Atlassian JIRA

View raw message