> 백엔드 개발 > C++ > 본문

값에 의한 전달 또는 참조: \'속도를 원하십니까? 값에 의한 전달\'이 실제로 참이 되는 경우는 언제입니까?

Susan Sarandon
풀어 주다: 2024-10-26 18:08:03
원래의
386명이 탐색했습니다.

  Passing by Value or Reference: When Does

"속도를 원하십니까? 값으로 전달"이 성능에 미치는 영향

"속도를 원하십니까? 값으로 전달" 원칙은 인수를 다음으로 전달하는 것을 의미합니다. 값은 컴파일러가 복사 프로세스를 최적화하도록 허용하여 성능을 향상시킬 수 있습니다. 그러나 이 원칙은 토론과 반론을 촉발시켰습니다.

문자열 멤버가 있는 구조 X 및 Y의 경우 동작이 다양합니다.

  • X: 복사본을 사용하여 인수에서 임시 개체를 구성한 다음 이를 멤버 변수로 이동합니다. 인수가 rvalue인 경우 RVO(반환 값 최적화)가 복사본을 제거할 수 있습니다.
  • Y: 인수에 대한 상수 참조를 바인딩하지만 여전히 문자열을 멤버 변수에 복사합니다.

따라서 rvalue를 X에 전달하면 잠재적으로 이동만 발생할 수 있지만 Y에 전달하려면 항상 복사본이 필요합니다.

일반적으로 값을 전달하는 것이 다음보다 성능이 더 좋을 수 있습니다. rvalue의 경우 참조로 전달하지만 lvalue의 경우 참조로 전달하는 것과 유사합니다. 이는 일반적으로 이동이 포인터를 전달하는 시간과 비슷하기 때문입니다(참조의 경우).

그러나 이 원칙은 엄격한 규칙이 아니며 사례에 따라 고려해야 한다는 점에 유의하는 것이 중요합니다. -경우에 따라. 프로파일링은 다양한 전달 메커니즘이 실제 성능에 미치는 영향에 대한 귀중한 통찰력을 제공할 수 있습니다.

또한 값으로 객체를 전달하면 메모리 사용량이 늘어나고 대형 객체를 처리할 때 성능이 저하될 수 있는 등의 단점이 있습니다. 따라서 결정을 내릴 때 장단점을 신중하게 평가해야 합니다.

위 내용은 값에 의한 전달 또는 참조: \'속도를 원하십니까? 값에 의한 전달\'이 실제로 참이 되는 경우는 언제입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿