[cfe-commits] [libcxx] r135893 - /libcxx/trunk/include/string
Howard Hinnant
hhinnant at apple.com
Sun Jul 24 14:45:06 PDT 2011
Author: hhinnant
Date: Sun Jul 24 16:45:06 2011
New Revision: 135893
URL: http://llvm.org/viewvc/llvm-project?rev=135893&view=rev
Log:
Optimization of string::operator< by M.E. O'Neill. Discussion in http://llvm.org/bugs/show_bug.cgi?id=10461
Modified:
libcxx/trunk/include/string
Modified: libcxx/trunk/include/string
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/string?rev=135893&r1=135892&r2=135893&view=diff
==============================================================================
--- libcxx/trunk/include/string (original)
+++ libcxx/trunk/include/string Sun Jul 24 16:45:06 2011
@@ -3392,7 +3392,17 @@
int
basic_string<_CharT, _Traits, _Allocator>::compare(const basic_string& __str) const _NOEXCEPT
{
- return compare(0, npos, __str.data(), __str.size());
+ size_t __lhs_sz = size();
+ size_t __rhs_sz = __str.size();
+ int __result = traits_type::compare(data(), __str.data(),
+ _VSTD::min(__lhs_sz, __rhs_sz));
+ if (__result != 0)
+ return __result;
+ if (__lhs_sz < __rhs_sz)
+ return -1;
+ if (__lhs_sz > __rhs_sz)
+ return 1;
+ return 0;
}
template <class _CharT, class _Traits, class _Allocator>
More information about the cfe-commits
mailing list