[질문: 코드비교] 어느 쪽이 대략 얼마나 더 빠를지 예측할 수 있을까요?
글쓴이: 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%?) 그때 고민하시면 됩니다.
댓글 달기