将参数作为值vs作为const引用传递的性能

时间:2016-01-13 11:47:17

标签: c++ performance

我是否在现代编译器上通过const值或const引用传递一个小对象是否重要?例如,我有几种接受而不是修改boost::units::quantity<boost::units::si::length, float>的方法,无论如何都应优化浮动。

通常我会将参数的类型声明为const引用,但我担心如果我这样做,编译器就无法优化模板方式。

编辑:我没有想到但是rahul.deshmukhpatil在评论中提到过,如果我接受const&,编译器必须至少发出双重代码我从多线程环境中调用的案例。

1 个答案:

答案 0 :(得分:1)

如果它是POD,我希望按值传递它会导致整体性能稍快一些。通过“略微”,我的意思是“只有某个特定的工作线上的某个人,其中理智的优先级低于每纳秒的表现,才会关心”。

要理解原因,有必要了解在传统硬件上如何进行函数调用以及如何传递参数。

除了POD之外,唯一的答案是尝试任何一种方式,并收集一些统计数据。

如果你真的不在乎几毫秒的差异,那么做更方便的事情。

而且,在任何一种情况下,模板都无关紧要。