Re: efficiency in passing a value to a function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Steve Graegert wrote:

> > I think passing as const & would be more efficient since passing by
> > value would involve copying the value whereas passing by const & would
> > skip this step. Am I right? Or is there something else?
> 
> I have seen many programs making use const reference parameters in
> order to inform the compiler that the parameter is read-only, and
> hence should be better optimized.
> 
> Unfortunately, this intent is at odds with the C++ language
> definition. The const keyword says that the storage may not be
> modified through the given name. What it does not say is that the
> storage cannot be modified through some other name.
> 
> With the exception of variables directly declared const, which means
> you can only initialize them, const is basically ineffective a
> improving run-time performance. It does, however, catch errors in the
> programming process.

Using a const qualifier still allows the compiler to optimise the
caller. E.g. if it computes a complex expression involving a variable,
passes a pointer/reference to that variable to a function, then
subsequently uses the result of the expression, it doesn't have to
re-compute the expression if the pointer/reference has a const
qualifier.

In any case, I suspect that the OP was talking primarily about passing
references rather than values, rather than about const qualifiers
per se.

-- 
Glynn Clements <glynn@xxxxxxxxxxxxxxxxxx>
-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Assembler]     [Git]     [Kernel List]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [C Programming]     [Yosemite Campsites]     [Yosemite News]     [GCC Help]

  Powered by Linux