이것은 C++ 문제입니다. 특정 매개 변수에 따라 구현이 다른 두 개의 유틸리티 함수를 갖고 싶습니다. 런타임 중에이 매개 변수를 기반으로 호출해야하는 구현이 무엇인지, 메모리 사용 및 성능면에서 가장 좋은 설계는 무엇인지 결정됩니다. 우리는 두 가지 접근법을 생각하고 있지만 다음 중 하나에서 얻은 개선점을 확인할 수는 없습니다. -이 두 유틸리티 함수에 대한 인터페이스를 정의하고이를 확장하는 여러 클래스가있는 경우이 클래스 구현의 인스턴스가있는 맵을 생성합니다 (eager initialising) - 하나의 클래스에서 모든 함수를 정적 함수로 정의하고 함수 포인터를 사용하여 호출하십시오.클래스 인스턴스 포인터 또는 함수 포인터?
1
A
답변
2
가상 상속은 일반적으로 함수 포인터를 사용하여 구현되므로 두 아이디어가 모두 컴파일러 관점에서 똑같습니다.
두 번째 생각에, 당신은 함수 호출만큼 기본 성능을 고려하고 있습니다. 병목 현상이되는 부분을 100 % 확신하고 있습니까? 최적화 할 때 sidetracked하고 성능에 0 % 또는 1 %의 영향을주는 것을 사용하는 것은 매우 쉽습니다. 그래서 황금률에 충실하십시오 : 어떤 부분이 정말로 당신을 늦추는 지 증명하십시오. 테스트를 작성하면 두 솔루션을 모두 테스트하고 어느 것이 더 빠른 결과를 얻는 것이 쉽습니다.
관련 문제
- 1. .Net 인스턴스 함수 포인터
- 2. 클래스 내부 함수 포인터
- 3. 클래스 간의 함수 포인터
- 4. 클래스 멤버 함수 포인터
- 5. 클래스 메서드/함수 내부의 포인터
- 6. 함수 포인터?
- 7. 클래스 멤버의 함수 포인터 전달
- 8. C++ 클래스 생성자의 함수 포인터
- 9. 클래스 __init__의 파이썬 함수 포인터
- 10. 클래스 내부 함수 포인터 액세스
- 11. 함수 포인터
- 12. Typedef 함수 포인터 포인터 오류
- 13. 함수 포인터 (클래스 멤버 함수)의 HashMap
- 14. 클래스 non-static 메서드 전역 함수 포인터
- 15. 클래스 멤버로서의 클래스 멤버 함수 포인터
- 16. 함수 포인터
- 17. 함수 포인터
- 18. 함수 포인터
- 19. C 함수 이름 또는 함수 포인터?
- 20. 함수 또는 펑터에 대한 포인터? 함수 생성기
- 21. C++ 함수 정적 포인터 개체의 멤버 함수 포인터
- 22. 멤버 함수 포인터 비교
- 23. C++ 함수 포인터
- 24. 주조 함수 포인터 ++
- 25. Lambdas 대 UI 이벤트를위한 함수 포인터 + 함수 포인터
- 26. 다형 멤버 함수 포인터
- 27. 구성원 함수 VxWorks의 포인터
- 28. Void 함수 포인터 포인터 매개 변수
- 29. C++ 함수 포인터 캐스팅
- 30. 부스트 멤버 함수 포인터
기본 인터페이스 사용 사례처럼 들립니다. 필요한 함수로 기본 인터페이스를 만든 다음이 함수를 구현하는 두 개의 클래스를 만듭니다. – andre
귀하의 질문은 구문 분석하기가 매우 어렵지만 상속 및 가상 메소드가 필요합니다. – Massa
매개 변수를 기반으로하는 간단한 스위치/사례, 다음에 의해 인덱싱 된 함수 포인터가 실제로 구현되었습니다 (적어도). 매개 변수 (유효한 매개 변수 확인), 맵을 사용하여 팩토리에서 가져온 스위치/케이스 또는 다형 클래스를 통해 팩토리 메소드에서 얻은 다형 클래스. 성능이 중요한 경우 첫 번째 방법이 가장 빠른 경우가있을 수 있습니다. – stefaanv