GEMS 2권 (1)

GEMS 2016. 1. 21. 19:55

프로파일링을 신경쓰자 (직접 수치를 봐야 알 수 있는 것들이 있기 때문이다.)


객체의 생성과 소멸

- 객체가 필요하게 되기 전까지는 생성하지 말 것

- 루프에선 생성하지 말 것


초기화 목록 사용

- operator=을 거쳐서 초기화 되는 것은 비효율 적이기 때문에


후증가 보단 선증가 사용

- 후증가는 복사본을 만들고 반환해야한다.


값을 반환하는 연산자는 피하자

operator+ 같은 경우에는 새로운 객체를 반환해야 하기 때문에

임시객체를 반환하지 않는 += 같은 단항 연산자를 사용하는 것이 좋다.


가벼운 생성자를 사용하자

operator= 보다는 복사생성자가 좋다.

매개변수 하나짜리 생성자를 explicit으로 선언하는 습관을 들이는 것이 좋다.

(형을 변환할 때 컴파일러가 내부적인 임시 객체를 생성하는 일을 방지할 수 있다.)


객체를 미리 할당하고 캐싱할 것

빈번하게 할당, 해제되는 클래스들을 사용할 때는 일일이 할당하기 보단 미리 할당하는게 좋다.


메모리 관리

new와 malloc()을 재정의 하여 사용하는 것이 좋다.(단편화 방지)


가상함수

가상 함수 호출의 추가적인 부담은 가상함수 테이블에 대한 간접적인 접근에서 기인한다.

호출의 주소를 미리 알 수 없기 때문에 명령어 캐시 적중률이 낮아진다.

작고 자주 쓰이는 객체들은 계통적인 클래스 상속 구조에서 독립시키는 것이 좋다.


코드 크기


STL

STL에 관한 여러 예시와 조심할 점 (59p)






'GEMS' 카테고리의 다른 글

GEMS 2권 추상 인터페이스  (0) 2016.01.22
GEMS 2권 인라인 VS 매크로  (0) 2016.01.21
GEMS 1권(4)  (0) 2016.01.20
GEMS 1권 (3)  (0) 2016.01.15
GEMS 1권(2) STL  (0) 2016.01.15
posted by 알쿠미