【发布时间】:2019-07-01 13:39:51
【问题描述】:
假设我想传递一个 POD 对象作为 const 参数。我知道对于像 int 和 double 这样的简单类型,通过值传递比通过 const 引用更好,因为引用开销。但是在多大的情况下值得作为参考传递呢?
struct arg
{
...
}
void foo(const arg input)
{
// read from input
}
或
void foo(const arg& input)
{
// read from input
}
即,我应该从多大的 struct arg 开始使用后一种方法?
我还应该提到,我在这里不是在谈论复制省略。让我们假设它没有发生。
【问题讨论】:
-
对于这样的问题只有一个答案:测量!其他的都是深奥的
-
一般来说,您应该始终致力于生成简单且可读/可理解/可维护的代码,而不必担心(过早的)优化。然后,如果性能不是“足够好”™(通常足够足够好)或达到要求,那么您测量和分析并进行基准测试以找到要优化的顶级瓶颈(使用大量的文档和 cmets)。
-
顺便问一下这个问题的动机是什么?只需通过 const ref 并且仅当您需要副本时才进行复制
标签: c++ performance reference