babo_ptr은 내가 실험삼아 만드는 스마트 포인터 이다. 메모리 릭 테스트도 다 끝냈다.
이 상태에서 .. 두 스마트 포인터의 비교...
우선 shared_ptr을 조금 밖에 분석을 못했는데,
1. 쓰레드 동기화 기법도 들어갔다.
2. shared_ptr 8바이트, count 용 8바이트
3. 기본적인 예외처리 되어 있음
babo_ptr 은..
1. 쓰레드 동기화를 뺏다.
2. babo_ptr은 8바이트, 중 count 용 4바이트 를 소모 한다.
3. 예외처리 안되어 있음;;
이렇게 만들었다.
.. 생성 시간 비교에선 babo_ptr이 약간 빠르다. 이건 당연할듯 4바이트 적게 생성하니까..
문제는 .. 소멸할 때, babo_ptr은 약 10초라면 shared_ptr은 5초이다.
도저히 이해가 가지 않아, 선생님께 여쭈어 보니, 릴리즈 모드와 디버깅 모드가 있으니, 릴리즈 모드로 해도 똑같은지 비교해보라고 하셨다.
전체 성능비교 (12byte * 10만개 생성및 소멸 시험)
릴리즈 모드의 성능 babo_ptr > shared_ptr 총 40ms 앞선다. .... 엄청 미미하다.
디버깅 모드의 성능 babo_ptr < shared_ptr 총 6000ms 앞선다, 엄청난 성능이다.
결론
.. 뻘짓거리 하지 말고 boost::shared_ptr 을 사용 하자.. 하지만 주위에서 사용 안하니, .. 코드 재사용 때문에 나도 사용을 못한다;;
여담
릴리즈 모드에서 함수 호출에 들어 가는 비용은 42억번 호출당 0ms 정도이다. .. 거의 비용을 물지 않는다고 보면 된다.
디버깅 모드에선 함수 42억번은 좀 느려, 1억번을 카운팅하고 1회 호출당 .. 시간은 0.00007ms 비용을 지불한다.(프라스캇 630 기준)
.. 함수 호출 비용이 프로그래램 속도에 전혀 영향을 주지 않는다는것을 알수 있다.
도데체 왜 C 가 C++ 보다 빠르다는 말이 나왔을까? 빨라봐야 0.00001ms 빠를까 말까 할텐데 말이다.
이번 테스트로 알게 된 진실들
1. 함수 호출 비용은 프로그램 속도에 전혀 영향을 주지 않는다.
2. C가 C++보다 빠르다는 소리는 헛소리다.
3. public으로 데이터를 관리하는 이유는 Get Set 이 귀찮아서이지, 호출 비용 때문이 될 수 없다!
4. 성능을 향상 시키려면, 설계, 알고르즘 개선이 엄청난 효과를 낸다.
이 상태에서 .. 두 스마트 포인터의 비교...
우선 shared_ptr을 조금 밖에 분석을 못했는데,
1. 쓰레드 동기화 기법도 들어갔다.
2. shared_ptr 8바이트, count 용 8바이트
3. 기본적인 예외처리 되어 있음
babo_ptr 은..
1. 쓰레드 동기화를 뺏다.
2. babo_ptr은 8바이트, 중 count 용 4바이트 를 소모 한다.
3. 예외처리 안되어 있음;;
이렇게 만들었다.
.. 생성 시간 비교에선 babo_ptr이 약간 빠르다. 이건 당연할듯 4바이트 적게 생성하니까..
문제는 .. 소멸할 때, babo_ptr은 약 10초라면 shared_ptr은 5초이다.
도저히 이해가 가지 않아, 선생님께 여쭈어 보니, 릴리즈 모드와 디버깅 모드가 있으니, 릴리즈 모드로 해도 똑같은지 비교해보라고 하셨다.
전체 성능비교 (12byte * 10만개 생성및 소멸 시험)
릴리즈 모드의 성능 babo_ptr > shared_ptr 총 40ms 앞선다. .... 엄청 미미하다.
디버깅 모드의 성능 babo_ptr < shared_ptr 총 6000ms 앞선다, 엄청난 성능이다.
결론
.. 뻘짓거리 하지 말고 boost::shared_ptr 을 사용 하자.. 하지만 주위에서 사용 안하니, .. 코드 재사용 때문에 나도 사용을 못한다;;
여담
릴리즈 모드에서 함수 호출에 들어 가는 비용은 42억번 호출당 0ms 정도이다. .. 거의 비용을 물지 않는다고 보면 된다.
디버깅 모드에선 함수 42억번은 좀 느려, 1억번을 카운팅하고 1회 호출당 .. 시간은 0.00007ms 비용을 지불한다.(프라스캇 630 기준)
.. 함수 호출 비용이 프로그래램 속도에 전혀 영향을 주지 않는다는것을 알수 있다.
도데체 왜 C 가 C++ 보다 빠르다는 말이 나왔을까? 빨라봐야 0.00001ms 빠를까 말까 할텐데 말이다.
이번 테스트로 알게 된 진실들
1. 함수 호출 비용은 프로그램 속도에 전혀 영향을 주지 않는다.
2. C가 C++보다 빠르다는 소리는 헛소리다.
3. public으로 데이터를 관리하는 이유는 Get Set 이 귀찮아서이지, 호출 비용 때문이 될 수 없다!
4. 성능을 향상 시키려면, 설계, 알고르즘 개선이 엄청난 효과를 낸다.
'연구실 > 파편화된 기록들' 카테고리의 다른 글
Virtual-Key Codes : Windows 에서 사용 하는 가상키 코드 리스트 (0) | 2008.07.14 |
---|---|
Tistory 에서 SyntaxHighlighter 사용 하기 (9) | 2008.07.13 |
표준 STL 에 있는, 컨테이너 3개를 지금에서야 알았다. (0) | 2008.07.13 |
추천도서 1탄 이펙티브 STL, Effective STL (0) | 2008.07.12 |
항목 7: typedef가 문자적으로만 줄여 준다고 생각하지 마라. (0) | 2008.07.11 |
03 정점 : 정점을 다루는 강력한 도구인 정점 버퍼 (0) | 2008.07.05 |
2-02 디바이스 : Direct3D의 핵심 객체 (0) | 2008.07.05 |
2장. 따라해 보기 : 3차원 기초 이론과 Direct3D의 최소한의 이해 (0) | 2008.07.05 |
1부 1장 기초 영어와 이론 (0) | 2008.07.05 |
1부 기초 지식 : 3D 프로그래밍으로의 첫 걸음 (0) | 2008.07.04 |
최근댓글