performance improvement - StringRef::operator=

inlined and reduced data copy in half.
Further work on #1086.
Brings test from 0m44.942s to 0m37.913.
This commit is contained in:
Neal Coombes 2017-11-17 14:15:26 -06:00
parent b0c379f621
commit fe725648a7
2 changed files with 8 additions and 5 deletions

View File

@ -17,10 +17,6 @@
namespace Catch { namespace Catch {
auto StringRef::operator = ( StringRef other ) noexcept -> StringRef& {
swap( other );
return *this;
}
StringRef::operator std::string() const { StringRef::operator std::string() const {
return std::string( m_start, m_size ); return std::string( m_start, m_size );
} }

View File

@ -77,7 +77,14 @@ namespace Catch {
delete[] m_data; delete[] m_data;
} }
auto operator = ( StringRef other ) noexcept -> StringRef&; auto operator = ( StringRef const &other ) noexcept -> StringRef& {
delete[] m_data;
m_data = nullptr;
m_start = other.m_start;
m_size = other.m_size;
return *this;
}
operator std::string() const; operator std::string() const;
void swap( StringRef& other ) noexcept; void swap( StringRef& other ) noexcept;