Message Delivery vs Direct Function Calls

2017. 3. 15. 10:43프로그래밍/Windows

Message Delivery vs Direct Function Calls


멀티 쓰레드 환경이나 다양한 윈도우를 관리하는 환경에서 

다른 클래스간의 함수를 호출해야 하는 경우가 상당수 존재한다.


이 경우 

메시지 전달을 통해 함수를 호출 할 것인가?

클래스에 직접 접근해서 함수를 호출 할 것인가?

인터페이스를 정의하여 이를 통해 호출 할 것인가? 


어느 쪽이 좋을까? 하는 의문점을 가지게 되어 생각해 보았다.


각각의 특징과 장단점을 알아보면


message delivery

- 메시지 전달과정을 거쳐야 해서 direct function calls 에 비해 느리다.

- 정보은닉, 커플링(종속성)이 줄어 객체지향 적이다.

- 전달 파라미터 수가 제한되어 여러 변수를 넘기기 위해서는 구조체 선언이 필요하다.


direct function call

- 함수 주소에 직접 접근하여 빠르다.

- 함수명, 파라미터에 대하여 전부 알고 있어야 하며(정보은닉), 

  함수가 변경되면 호출된 클래스에서도 같이 수정작업이 필요하다.(종속성)

- 파라미터 제한 없이 자유롭게 넘길 수 있다.


Interface

- 두가지 방법의 중간지대. 절충안.


코드의 심플함.

- 메시지 전달의 경우 메시지 수신 부를 작성해야 하여 코드가 길어진다.



속도를 중시 할 것인가? 객체지향성을 중시 할 것인가?

또한 빠른 속도와 거대한 프로젝트로 인해 둘 다 중요한 게임에서는 어느 것을 선호해야 할까?



참고

http://answers.unity3d.com/questions/656249/sendmessage-or-direct-function-call.html

http://www.mark-sweeney.com/?p=822

https://www.quora.com/What-is-the-difference-between-message-passing-versus-calling-a-function-method-invocation