diff options
author | aneporada <[email protected]> | 2022-03-21 20:37:27 +0300 |
---|---|---|
committer | aneporada <[email protected]> | 2022-03-21 20:37:27 +0300 |
commit | d8b7fbd32069dda0983d4e0047b080d7c8c2c090 (patch) | |
tree | f9a0ba6ed16a7ef1deed77406be4d89e838924d9 | |
parent | 11ec7b3d4dc40d3821ea5e30fca3075d13d7d7c1 (diff) |
[YQL-14312] Aviod copying of unboxed values
ref:c349a8e3e59bc99fdd6c894b69eebf4186d2cedf
-rw-r--r-- | ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h b/ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h index 2b3b7fb8865..95798ca383e 100644 --- a/ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h +++ b/ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h @@ -59,15 +59,15 @@ public: class TDictIterator : public TComputationValue<TDictIterator> { public: - TDictIterator(TMemoryUsageInfo* memInfo, TIterator iter) + TDictIterator(TMemoryUsageInfo* memInfo, THolder<TIterator>&& iter) : TComputationValue<TDictIterator>(memInfo) - , Iter(iter) + , Iter(std::move(iter)) , Index(Max<ui64>()) {} private: bool Next(NUdf::TUnboxedValue& key) override { - if (NUdf::TBoxedValueAccessor::Skip(Iter)) { + if (NUdf::TBoxedValueAccessor::Skip(*Iter)) { key = NUdf::TUnboxedValuePod(++Index); return true; } @@ -76,7 +76,7 @@ public: } bool NextPair(NUdf::TUnboxedValue& key, NUdf::TUnboxedValue& payload) override { - if (NUdf::TBoxedValueAccessor::Next(Iter, payload)) { + if (NUdf::TBoxedValueAccessor::Next(*Iter, payload)) { key = NUdf::TUnboxedValuePod(++Index); return true; } @@ -85,7 +85,7 @@ public: } bool Skip() override { - if (NUdf::TBoxedValueAccessor::Skip(Iter)) { + if (NUdf::TBoxedValueAccessor::Skip(*Iter)) { ++Index; return true; } @@ -93,7 +93,7 @@ public: return false; } - TIterator Iter; + THolder<TIterator> Iter; ui64 Index; }; @@ -180,11 +180,11 @@ private: } NUdf::TUnboxedValue GetKeysIterator() const override { - return NUdf::TUnboxedValuePod(new TDictIterator(this->GetMemInfo(), TIterator(this->GetMemInfo(), List, ItemFactory, Start, Finish, Reversed))); + return NUdf::TUnboxedValuePod(new TDictIterator(this->GetMemInfo(), MakeHolder<TIterator>(this->GetMemInfo(), List, ItemFactory, Start, Finish, Reversed))); } NUdf::TUnboxedValue GetDictIterator() const override { - return NUdf::TUnboxedValuePod(new TDictIterator(this->GetMemInfo(), TIterator(this->GetMemInfo(), List, ItemFactory, Start, Finish, Reversed))); + return NUdf::TUnboxedValuePod(new TDictIterator(this->GetMemInfo(), MakeHolder<TIterator>(this->GetMemInfo(), List, ItemFactory, Start, Finish, Reversed))); } ui64 GetDictLength() const override { |