블로그 이미지
fiadot_old

칼퇴근을 위한 게임 서버 개발 방법론에 대한 심도있는 고찰 및 성찰을 위한 블로그!

Rss feed Tistory
Technical Article/펌 2004. 6. 25. 17:01

최상위 객체에서의 임계영역 초기화에 대해서...

서버를 다시 짜면서 최상위 객체를 정의하는데

이전에 한걸 보니 생성자에서 Critical Section 초기화를 하는 부분이 보였다.

전체 객체에서 lock이 필요한게 아닐텐데...

과연이게 효과적일까? 하다가... 시험해보기로 했다.

1. 이전에 짰던거 처럼 최상위 객체에서 초기화를 하고,
1차 상속받은 클래스에서 lock, unlock을 해주는 코드



2. 최상위 클래스에서는 아무것도 없고, 1차 상속받은 클래스에서
초기화를 해주고 2차상속에서 처리하는 코드



단지 최종 객체만을 비교한다면 둘의 성능차이가 없겠지만...

타입1에서 최상위 객체를 상속받은 2개의 클래스와
타입2에서 최상위 객체 하나를 상속받고 1차 클래스를 상속받은 클래스

2개를 비교해면 좀 다르다.

1차 테스트



2차 테스트



이외에도 여러번 상속시 생성자와 파괴자의 아무 내용이 없을때의 테스트도 했는데 거의 차이는 없었지만 상속을 할수록 느려지는 결과를 보였다.

결론...
lock이 필요없는 코드라도 초기화가 한두번만 된다면 작업의 편의를 위해서 최상위객체를 상속받아 Critical secition의 초기화를 빼줄 필요가 없다.
,
TOTAL TODAY