On 7/25/2014 4:18 AM, Jacob Carlborg wrote:
On 25/07/14 11:46, Jonathan M Davis wrote:

Code that worked perfectly fine before is now slower, because it's using
opCmp for opEquals when it wasn't before.

Who says opCmp need to be slower than opEquals.

Consider:

   struct S { int a,b; }

   int opCmp(S s2) {
        return (a == s.a) ? s.b - b : s.a - a;
   }

   bool opEquals(S s2) {
        return *cast(long*)&this == *cast(long*)&s2;
   }

Because of byte ordering variations, the cast trick wouldn't work reliably for opCmp.

Do people do such things? Yes, since opEquals can very likely be in critical performance loops.

Reply via email to