Lik*_*kon 7 c++ optimization function return-value-optimization
例如,我们有编码功能.使用的最佳做法是什么:
void Crypto::encoding(string &input, string &output)
{
//encoding string
output = encoded_string;
}
Run Code Online (Sandbox Code Playgroud)
要么
string Crypto::encoding(string &input)
{
//encoding string
return encoded_string;
}
Run Code Online (Sandbox Code Playgroud)
我们应该使用引用还是返回来返回字符串?据我所知,返回一个字符串将需要一些时间来初始化一个将由return指令返回的新字符串.在处理引用的变量时,我不会浪费时间来初始化一些新的变量,我只是结束了这个函数.
我们应该主要使用reference和make函数返回类型void吗?或者,我们应该引用时,我们要返回两个或多个变量,当我们需要返回一个变量,然后使用返回指令只返回的数据?
Eri*_*fer 10
不要优化你没有测量的东西.
通常,返回计算结果更好(更易读)return
.如果由于对象太胖而需要很长时间,您仍然可以恢复通过参考参数返回结果,但只有在您证明这将导致性能显着提高(测量它)之后.例如,如果您只编码非常短的字符串并且偶尔只编码一次,那么复制的开销可以忽略不计.
在新标准 C++11 中,由于新的移动语义,您可以使用第二种变体。
不过,最有可能的是,您的编译器仍然只支持较旧的标准。在这种情况下,您的第一个示例不会引起任何复制并且更好。