calling convention optimisation & const/immutable ref
Marc Schütz via Digitalmars-d
digitalmars-d at puremagic.com
Tue Nov 8 03:14:07 PST 2016
On Monday, 7 November 2016 at 16:48:55 UTC, John Colvin wrote:
> Some people use ref for performance to prevent the copying that
> must occur when passing by value. I propose a small
> optimisation to make this unnecessary in a bunch of cases.
>
> At the ABI level (no change in language semantics), if a given
> parameter would otherwise be copied and passed on the stack:
> 1) immutable parameters to all functions are passed by reference
> 2) const parameters to pure functions are passed by reference,
> if and only if all other parameters - including any implicit
> this parameter - contain no mutable references (otherwise
> "weakly" pure functions could modify the data we are now
> referring to instead of having copied, changing semantics).
If this is done, it should only apply to parameters larger than a
certain size, say 2 words. Indirect memory access comes with its
own cost that is often larger than that of copying.
More information about the Digitalmars-d
mailing list