DIP 1014:Hooking D's struct move semantics--Community Review Round 1
Rubn
where at is.this
Fri May 18 19:36:57 UTC 2018
On Thursday, 17 May 2018 at 20:25:26 UTC, Shachar Shemesh wrote:
> Obviously, Something can be an enum or a boolean. If it is,
> however, then we have to perform a condition to select the
> correct value. The problem with conditionals is that if the CPU
> misses a guess about what they are (and in our case, the CPU is
> going to miss about 50% of the time), they are extremely
> expensive to evaluate.
>
> Performance wise, a much saner approach is:
> alias Something = int*;
>
> Of course, this means our struct now has a self referencing
> pointer.
>
> What I'm getting at is that even if there are alternatives to
> structs pointing at themselves, they may not be performance
> wise comparable to pointers.
It's possible to do a branchless condition that chooses between
two pointers. I think if the hardware (and compiler) support it
it'll just optimize down to a "cmov".
More information about the Digitalmars-d
mailing list