Strange optimization results

Jonathan Wakely jwakely.gcc@gmail.com
Mon Apr 11 09:49:00 GMT 2011


The difference in performance may be caused by this overload of
operator== for std::string

  template<typename _CharT>
    inline
    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
    operator==(const basic_string<_CharT>& __lhs,
	       const basic_string<_CharT>& __rhs)
    { return (__lhs.size() == __rhs.size()
	      && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
						    __lhs.size())); }

If that's not declared then the default operator== simply calls
string::compare and should have similar performance at all
optimization levels.



More information about the Gcc-help mailing list