這可能是一個簡單的問題,但是這讓我想起了。這是關於下面的兩個功能之間的區別:C++函數中的效率?
T func_one(T obj) { //for the purpose of this question,
return obj + obj; //T is a large object and has an overloaded '+' operator
}
T func_two(T obj) {
T output = obj + obj;
return output;
}
在func_one()
,而不是創建一個對象T
,分配一個值,然後返回對象,我只是返回的值本身,而無需創建一個新的對象。如果T
是一個很大的對象,那麼func_one()
會比func_two()
更有效嗎?或者func_one()
是否會在返回兩個對象的總和時創建對象T
?
你不應該像這樣添加和返回大對象。 – Mikhail
任何現代優化編譯器都會爲兩者生成類似的程序集。此外,藉助RVO和移動語義,這可能是完成此操作的最有效方式。要知道的唯一方法是配置文件。 – Chad