인프런 커뮤니티 질문&답변

이성원님의 프로필 이미지

작성한 질문수

MFC Windows 프로그래밍 - 기본

Message driven 구조

메시지 루프에서 메시지 처리 성능 비교: WinAPI vs MFC

해결된 질문

24.11.05 01:26 작성

·

20

0

안녕하세요.

 

WinAPI에서는 메시지가 많이 쌓이면 switch case문으로 처리하기 때문에 병목 현상이 생긴다고 말씀을 하셨는데요. 그러면 MFC에서는 메시지 맵으로 처리한다면 병목 현상이 확 줄어드나요? 성능 차이가 그렇게 심하게 나는지 궁금합니다.

답변 3

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

2024. 11. 05. 14:29

쉽게 생각해서 Event handler 시스템을 Lookup table로 만든다고 생각하시면 되겠습니다. 항상 그런 것은 아니지만 다수의 switch-case문은 Lookup table 구조로 변경 할 수 있습니다. 이렇게 하면 높은 성능향상을 기대 할 수 있고요. 더 자세한 정보는 Lookup table에 대해 찾아보시기 바랍니다. 참고하시기 바랍니다. 😄

(참, 독하게 시작하는 C, 독하게 시작하는 Java 강의에 Lookup table에 관한 내용이 들어 있습니다.)

0

이성원님의 프로필 이미지
이성원
질문자

2024. 11. 05. 01:34

AI 답변을 원하지 않습니다.

 

강사님께서 WinAPI 병목 현상을 개선해서 나오는 게 MFC라고 말씀하셨는데요. 메시지맵을 언급하면서요. 어떻게 병목 현상을 개선했는지에 대해서 설명이 없습니다. 설명좀 부탁드립니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 11. 05. 01:31

안녕하세요, 인프런 AI 인턴입니다. 이성원님.

메시지 루프에서 메시지 처리 성능에 대한 문의를 주셨군요. WinAPI와 MFC 간의 메시지 처리 방법에 대해 조금 더 자세히 설명드리겠습니다.

WinAPI에서는 메시지를 처리할 때 주로 switch case 문을 사용합니다. 이 방법은 코드가 간단하지만, 많은 메시지를 처리해야 할 경우 코드가 복잡해질 수 있습니다. 이 과정에서 병목 현상이 발생할 가능성도 존재합니다. 그러나 성능상의 차이보다는 코드의 복잡도와 유지보수 측면에서의 문제라고 볼 수 있습니다.

MFC에서는 메시지 맵을 통해 메시지를 처리합니다. 메시지 맵은 각 메시지를 해당 메시지를 처리하는 함수와 연결해주는 역할을 하며, 코드가 깔끔하게 작성될 수 있고, 확장성이나 유지보수 측면에서 유리합니다. 하지만, MFC의 메시지 맵도 결국은 내부적으로는 비슷한 방법으로 메시지를 분배하기 때문에, 성능 차이가 매우 크다고 보기는 어렵습니다.

즉, 성능보다는 코드 구조와 가독성, 유지보수성 측면에서의 차이가 더 크다고 볼 수 있습니다. MFC를 사용하면 메시지 처리 코드가 좀 더 간결하고 명확해질 수 있습니다.

다음 자료들이 도움이 되실 수 있습니다:
- MFC의 메시지 맵 이해하기: MFC 메시지 맵의 동작 방식에 대한 자세한 설명
- WinAPI와 MFC의 메시지 처리 비교: 두 기술에서의 차이점 설명

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.