Bonita Montero <Bonita.Montero@gmail.com>: Nov 24 08:12AM +0100 bool svCmp( string_view const &left, string_view const &right ) { if( left.size() != right.size() ) return false; #if defined(_WIN32) __try { return memcmp( left.data(), right.data(), left.size() ) == 0; } __except( EXCEPTION_EXECUTE_HANDLER ) { return left == right; } #else static size_t pageMask = 0; if( !pageMask ) [[unlikely]] pageMask = ~((size_t)sysconf( _SC_PAGESIZE ) - 1); auto inSamePage = []( string_view const &sv ) -> bool { return ((size_t)to_address( sv.begin() ) & pageMask) == ((size_t)to_address( sv.end() ) & pageMask); }; if( inSamePage( left ) && inSamePage( right ) ) [[likely]] return memcmp( left.data(), right.data(), left.size() ) == 0; return left == right;
Subscribe to:
Post Comments (Atom)
|
No comments:
Post a Comment