From ccb15cdb25e89e2277ecb185ffab428052459af5 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Thu, 22 Sep 2022 02:28:12 +0000 Subject: [PATCH] Use std::vector::insert() instead of std::copy() To improve the performance of the parcel instance creation, the parcel uses std::vector::insert(). Change-Id: Ia5c293373b57a2f75629b4a681458535af29cf6c Signed-off-by: Hwankyu Jhun --- parcel/parcel.cc | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/parcel/parcel.cc b/parcel/parcel.cc index e55b812..2c3e13f 100644 --- a/parcel/parcel.cc +++ b/parcel/parcel.cc @@ -32,7 +32,7 @@ Parcel::Impl::~Impl() = default; void Parcel::Impl::Write(const void* buf, uint32_t size) { auto* p = reinterpret_cast(buf); - std::copy(p, p + size, std::back_inserter(data_)); + data_.insert(data_.end(), p, p + size); } int Parcel::Impl::Read(void* buf, uint32_t size) { @@ -75,14 +75,13 @@ void Parcel::Impl::WriteSize(uint32_t size) { if (IsBigEndian()) size = GUINT32_TO_BE(size); - auto* p = reinterpret_cast(&size); - std::copy(p, p + sizeof(size), std::back_inserter(data_)); + Write(size); } template void Parcel::Impl::Write(T d) { auto* p = reinterpret_cast(&d); - std::copy(p, p + sizeof(T), std::back_inserter(data_)); + data_.insert(data_.end(), p, p + sizeof(T)); } int Parcel::Impl::ReadSize(uint32_t* size) { @@ -135,16 +134,14 @@ Parcel::~Parcel() = default; Parcel::Parcel(const Parcel& p) : impl_(new Impl(this)) { impl_->big_endian_ = p.impl_->big_endian_; - std::copy(p.impl_->data_.begin(), p.impl_->data_.end(), - std::back_inserter(impl_->data_)); + impl_->data_ = p.impl_->data_; impl_->reader_ = p.impl_->reader_; } Parcel& Parcel::operator = (const Parcel& p) { if (this != &p) { impl_->big_endian_ = p.impl_->big_endian_; - std::copy(p.impl_->data_.begin(), p.impl_->data_.end(), - std::back_inserter(impl_->data_)); + impl_->data_ = p.impl_->data_; impl_->reader_ = p.impl_->reader_; } return *this; -- 2.7.4