Do equality checks for dynamic arrays attempt to shortcut with pointer comparison

simendsjo simendsjo at gmail.com
Thu Apr 3 00:17:52 PDT 2014


On 04/03/2014 09:03 AM, dnspies wrote:
> If two dynamic arrays point to the same place in memory, is it fast to
> compare them for equality? or does every element still have to be compared?

Equals will first check for memory location.
This is from the runtime:

bool opEquals(Object lhs, Object rhs)
{
     // If aliased to the same object or both null => equal
     if (lhs is rhs) return true;

     // If either is null => non-equal
     if (lhs is null || rhs is null) return false;

     // If same exact type => one call to method opEquals
     if (typeid(lhs) is typeid(rhs) || typeid(lhs).opEquals(typeid(rhs)))
         return lhs.opEquals(rhs);

     // General case => symmetric calls to method opEquals
     return lhs.opEquals(rhs) && rhs.opEquals(lhs);
}



More information about the Digitalmars-d-learn mailing list