Thursday, November 24, 2022

Digest for comp.lang.c++@googlegroups.com - 14 updates in 3 topics

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;

No comments: