From c3e6cdc3040ac11a43d0bd88ad45e7ec201fe72d Mon Sep 17 00:00:00 2001 From: Brian Johnson Date: Tue, 17 Apr 2018 10:04:00 -0500 Subject: [PATCH] Optimization for string. GH #2350 --- contracts/eosiolib/datastream.hpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/contracts/eosiolib/datastream.hpp b/contracts/eosiolib/datastream.hpp index 3945891c1..f14132ba7 100644 --- a/contracts/eosiolib/datastream.hpp +++ b/contracts/eosiolib/datastream.hpp @@ -225,18 +225,19 @@ inline datastream& operator>>(datastream& ds, checksum256& d) { template DataStream& operator << ( DataStream& ds, const std::string& v ) { ds << unsigned_int( v.size() ); - for( const auto& i : v ) - ds << i; + if (v.size()) + ds.write(v.data(), v.size()); return ds; } template DataStream& operator >> ( DataStream& ds, std::string& v ) { - unsigned_int s; - ds >> s; - v.resize(s.value); - for( auto& i : v ) - ds >> i; + std::vector tmp; + ds >> tmp; + if( tmp.size() ) + v = std::string(tmp.data(),tmp.data()+tmp.size()); + else + v = std::string(); return ds; } -- GitLab