[질문: 코드비교] 어느 쪽이 대략 얼마나 더 빠를지 예측할 수 있을까요?
글쓴이: akihajj / 작성시간: 월, 2017/07/24 - 9:42오후
Foo::doTaskOnState() 메소드 기준으로,
가능하면 CPU사이클 기준으로 속도를 비교하고 싶습니다.
/*===================================*/
/*=========1. STATE 분기처리=========*/
/*===================================*/
enum State
{
STATE_1,
STATE_2,
STATE_3,
};
class Foo
{
State state;
inline void taskOnState1(){/*do nothing*/}
inline void taskOnState2(){/*do nothing*/}
inline void taskOnState3(){/*do nothing*/}
void doTaskOnState()
{
switch(state)
{
case STATE_1:
taskOnState1();
break;
case STATE_2:
taskOnState2();
break;
case STATE_3:
taskOnState3();
break;
}
}
};---------------------------------------------------------------------------------------------------------
2. 위의 분기처리를 handler로 묶은 것
/*===================================*/
/*2. 위의 분기처리를 handler로 묶은 것*/
/*===================================*/
class IStateHandler
{
virtual void doTaskOnState() = 0;
}
class State1Handler : IStateHandler
{
void doTaskOnState(){/*do nothing*/}
}
class State2Handler : IStateHandler
{
void doTaskOnState(){/*do nothing*/}
}
class State3Handler : IStateHandler
{
void doTaskOnState(){/*do nothing*/}
}
class Foo
{
IStateHandler handler;
void doTaskOnState()
{
handler.taskOnState1();
}
};Forums:


돌려 보셔요.
돌려 보셔요.
세벌 https://sebuls.blogspot.kr/
...
뭘 하든 실제로 doTaskOnState()에서 하는 일에 쓰이는 시간이 90% 이상이고 1번과 2번의 성능 차이는 대세에 아무 영향 없을 가능성이 매우 높습니다.
그러니까 그냥 둘 중에 전체 프로그램 구조에 더 적합한 걸로 쓰세요. 나중에 성능 문제가 생기면 profile 떠보고 이부분에 문제가 있으면 (그럴 확률 0.0001%?) 그때 고민하시면 됩니다.
댓글 달기