Do not copy memory in `Tensor::operator=` in case of constant argument
Signed-off-by: Efimov Alexander <a.efimov@samsung.com>
std::memcpy(_data, data, num_elements * sizeof(float));
}
- Tensor &operator=(const Tensor &t)
- {
- assert(_managed);
- if (this != &t)
- {
- reshape(t.getShape());
- fillData(t._data, t._shape.getNumElems());
+ Tensor& operator=(const Tensor& t) {
+ if (this == &t)
+ return *this;
+
+ if (!t._managed) {
+ if (_managed)
+ delete _data;
+
+ _managed = false;
+ _data = t._data;
+ _shape = t._shape;
+ } else {
+ // this tensor is not constant so we can write data into it
+ assert(_managed);
+ reshape(t._shape);
+ fillData(t._data, _shape.getNumElems());
}
+
return *this;
}