C에서 가상 함수의 성능 영향
클래스 디자인에서 가상 함수가 성능에 미치는 영향에 대해 우려를 표명하셨습니다. 이것이 타당한 우려입니까, 아니면 조기 최적화로 간주될 수 있습니까?
귀하의 질문에 답하기 위해 3GHz PowerPC CPU에서 성능 테스트를 실시했습니다. get/set 함수를 사용하여 간단한 4D 벡터 클래스를 만들었습니다. 인라인, 가상 및 일반 함수 호출로 정의된 함수를 사용하여 테스트를 실행했습니다.
결과는 다음과 같습니다.
이 경우 L1 캐시에 데이터를 맞추는 경우 가상 함수 호출은 인라인 호출보다 약 20배 느렸습니다. 그러나 이러한 성능 차이의 맥락을 고려하는 것이 중요합니다.
테스트 루프의 각 반복에는 12,288개의 함수 호출이 포함되었습니다. 따라서 가상 루프는 직접 루프보다 92ms 더 오래 걸리고 결과적으로 함수 호출당 추가 오버헤드가 7나노초에 불과합니다.
이러한 결과를 바탕으로 다음과 같은 결론을 내립니다.
대부분의 상황에서 최고의 성능을 위해 최적화하지 않는 한 캡슐화 및 유연성을 위해 가상 기능을 사용하는 것과 관련된 장단점이 잠재적인 성능 문제보다 더 큽니다.
위 내용은 C의 가상 기능이 성능 병목 현상을 일으키나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!