이것은 아마도 간단한 질문 일 것이지만, 이것은 내 마음을 가로 질러 온 것입니다. 이는 아래의 두 함수 사이의 차이에 관한되어 오히려 물체 T
를 생성 그것을 값을 할당하고 객체를 리턴하는 대신 func_one()
에서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;
}
를, I는 새로운 오브젝트를 생성하지 않고 값 자체를 반환한다. T
이 큰 개체 인 경우 func_one()
은 func_two()
보다 효율적입니까, 아니면 func_one()
이 두 개체의 합계를 반환 할 때 T
개체를 만들 수 있습니까?
이렇게 큰 개체를 추가하거나 반환하면 안됩니다. – Mikhail
현대의 최적화 컴파일러는 비슷한 어셈블리를 생성합니다. 또한 RVO 및 이동 의미론을 사용하면이 작업을 가장 효율적으로 수행 할 수 있습니다. 알아야 할 유일한 길은 프로파일 링입니다. – Chad