프로그래밍(Programming)/c++, 11, 14 , 17, 20
static_cast와 dynamic_cast의 속도 비교
3DMP
2013. 6. 4. 13:37
static_cast와 dynamic_cast의 속도 비교를 해 보았다.
아래는 실험한 코드와 결과 화면이다. debug로 테스트 한 결과다.
- // cmd.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
- //
- #include "stdafx.h"
- class object
- {
- public:
- virtual void print() { cout << "object" << endl; }
- virtual void copy(TCHAR* a) {}
- };
- class AAA : public object
- {
- public:
- virtual void print() { cout << "AAA" << endl; }
- void copy(TCHAR* a) { _tcscpy( str, a ); }
- private:
- TCHAR str[1024];
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
- object* mTestObject = new AAA;
- CCheckTime t; t.start();
- for(DWORD i=0; i<10000000; i++)
- static_cast<AAA*>(mTestObject)->copy("KOREA");
- cout << "static_cast : " << t.end() << "ms" << endl;
- t.start();
- for(DWORD i=0; i<10000000; i++)
- dynamic_cast<AAA*>(mTestObject)->copy("KOREA");
- cout << "dynamic_cast : " << t.end() << "ms" << endl;
- delete mTestObject;
- return 0;
- }
2배 정도 차이나는걸로 보이는데 릴리즈로 컴파일하게 되면 더 차이가 날 듯 하다.
아마도 검사하는 부분이나 기타 설정부분에서 dynamic_cast가 하는 일이 많으니 이런 일이 생기는듯 하다..
아마도 상속관계를 확실히 알고 있다면 dynamic_cast보다는 static_cast로 작성하는것이 코드 구동 시간에서도 최적화에서도 더 나은 선택, 반드시 선택해야 될듯 하다.
반응형