프로그래밍

cocos2d-x 프로파일링 기능에 관한 짧은 팁

ozlael 2013. 4. 5. 00:17

cocos2d-x에 프로파일링 기능이 제공되고 있지만, 기본적으로 배포시에는 비활성화 되어 있지요. 그 사용법에 대한 간단한 팁을 제공해드리고자 해요. 뭐 거창한건 아니구요 원하는 구간의 시작과 끝에 태깅을 하면 그 구간의 호출 수 및 시간등을 보여주는 방식이지요.

일단 기능을 활성화 기키려면 ccConfig.h에 디파인 되어 있는 CC_ENABLE_PROFILERS 를 1로 켜주면 되요. 그리고 사용 시는 원하는 구간에 CC_PROFILER_START("") CC_PROFILER_STOP("")로 달아주면 끝!

그리고 프로파일링 결과를 보고 싶으면 CC_PROFILER_DISPLAY_TIMERS()를 호출해주면 출력창에 결과가 나오지요. 물론 출력창에 찍는것이니 매 프레임 호출하는것은 미친짓이겠지요. (저는 이 함수를 참고해서 화면에 출력되게 개조해서 써요)

근데 한가지 손봐줘야 할 것이 하나 있는데요, CC_ENABLE_PROFILERS를 켜주고 빌드하면 링크 에러가 나지요. CC_PROFILER_START, CC_PROFILER_STOP, CC_PROFILER_DISPLAY_TIMERS 등의 디파인은 CCProfiling.h에 선언되어 있는 전역함수들을 매핑한 것인데, 선언 시 CC_DLL 가 빠져있네요. 혹시 심심해할까봐 이런 소소한 똥방울 심어주는 오픈소스의 센스 ㅎㅎ

다음과 같이 CC_DLL이 빠진 곳은 빈칸 채우기를 해주면 되요.

class CC_DLL CCProfilingTimer : public CCObject

...

extern void CC_DLL CCProfilingBeginTimingBlock(const char *timerName);

extern void CC_DLL CCProfilingEndTimingBlock(const char *timerName);

extern void CC_DLL CCProfilingResetTimingBlock(const char *timerName);

그리고, CCParticleBatchNode.cpp에 있는  CCParticleBatchNode::draw() 메소드에서 프로파일러를 사용하고 있는데,  CC_PROFILER_START로 되야 할 곳에  CC_PROFILER_STOP로 되어 있어요. 이곳도 살포시 수정 해주시고 빠진 include도 추가해주세요. 귀챦지만 어쩔 수가 없네요. 이런게 오픈소스의 잔재미죠;;

디버깅이 잘 안되서 머리 식힐 겸 글을 올리는데 하나도 안식네요. 훗. 롤이나 한판 해야겠어요. 그럼 모두들 즐트롤~

반응형