【发布时间】:2016-01-13 11:47:17
【问题描述】:
我是否在现代编译器上通过 const 值或 const 引用传递小对象是否重要?例如,我有几个方法接受但不修改 boost::units::quantity<boost::units::si::length, float>,无论如何都应该优化为浮动。
通常我会将参数的类型声明为 const 引用,但如果我这样做,我担心编译器无法优化模板方式。
编辑: 我没有想到但 rahul.deshmukhpatil 在 cmets 中提到的,如果我接受 const&,编译器必须至少在我的情况下发出双重代码m 从多线程环境中调用。
【问题讨论】:
-
" 但如果我这样做,恐怕编译器无法优化模板方式" 为什么?这些只是确保类型一致性的语法糖。
-
只是一般的一点,在多线程程序的情况下,如果您传递的对象同时由多个线程共享/作用于多个线程,那么通过值或引用传递可能会产生不同的结果。
-
@πάνταῥεῖ 因为我不确定
float const&参数是否与float const参数一样优化 -
Thantk @rahul.deshmukhpatil 我更新了我的问题
-
"如果我接受 const&,在我从多线程环境调用的情况下,编译器至少必须发出双重代码"嗯?!
标签: c++ performance