Efficient way to pass struct as parameter

Jonathan M Davis newsgroup.d at jmdavisprog.com
Tue Jan 2 19:46:44 UTC 2018


On Tuesday, January 02, 2018 19:27:50 Igor Shirkalin via Digitalmars-d-learn 
wrote:
> On Tuesday, 2 January 2018 at 18:45:48 UTC, Jonathan M Davis
>
> wrote:
> > [...]
>
> Smart optimizer should think for you without any "auto" private
> words if function is inlined. I mean LDC compiler first of all.

A smart optimizer may very well optimize out a number of copies. The fact
that D requires that structs be moveable opens up all kinds of optimization
opportunities - even more so when stuff gets inlined. However, if you want
to guarantee that unnecessary copies aren't happening, you have to ensure
that ref gets used with lvalues and does not get used with rvalues, and that
tends to mean either using auto ref or overloading functions on ref.

- Jonathan M Davis



More information about the Digitalmars-d-learn mailing list