부재 : 효율의 복병, 임시객체 개념정리 : 임시 객체란? 이름 없는 객체로, 발생되는 경우가 두가지가 있다. 1. 함수 호출을 성사시키기 위해 암시적 타입변환이 적용 될때 2. 함수가 객체를 값으로 반환 할 때 이유 1. 불필요한 임시객체 생성은 효율에 영향을 끼치기 때문이다. 해결 방법 1. 암시적 타입변환이 일어나지 않게 한다.(설계를 바꾸던가, 비상수 객체 참조자를 넘기던가) 2. 함수가 객체를 값으로 반환 할 때는 어쩔수 없기 때문에, 컴파일러가 최적화를 맞기자. 참조 1. C++ 에서 인자값이 비상수객체 참조자일 경우 암시적 타입변환이 일어나지 않는다. 왜냐하면 참조자는 전달되는 인자값이 변경되길 바랬을때 임시객체가 변경되어 잘못된 값으로 바뀔수가 있기 때문이다. 개인적인 생각 1. 사실 타입..
MEC++ 검색 결과
부재 : 처리 비용의 거품을 빼자. (과도 선행 평가) 이유 1. 자주 요구되는 작업의 데이터는 미리 해두어, 프로그램 효율을 높일수 있다. 구현방법 1. 캐싱 예) 데이터 베이스에 접근 하려 할때 2. 미리가져오기 예) 시스템 프로세스를 사용 할때. 참조 1. STL의 반복자 it 으로 it->second 로 쓸수 있겠지만 STL의 반복자는 포인터가 아니라 객체이기 때문에 (*it).second 이 이식성 면에서 더 좋다 하지만 1995년 7월 STL 반복자는 -> 를 지원해야 한다고 했기 때문에 요즘은 ->를 써도 무난하다. 개인적인 생각 1. 지연 평가와 선행평가는 무엇을 쓰던 상관이 없을것 같다. 정작 중요한건 둘다 필요한 부분에서 쓸수 있다면 효율이 매우 높을거 같다. 2. 모든것을 즉시평가 기..
부재 : 해야 할 때만 하자. 이유 1. 최선의 속도를 내는 방법은 아무것도 하지 않는 것이기 때문이다. 구현 방법 1. 참조 카운팅(불필요한 객체 복사 피하기) 2.데이터 읽기와 쓰기를 구분하기(특화된 작업으로 처리하기) 3. 지연 방식의 데이터 가져오기(필요한 할때 필요한 부분만 읽어 오기) 4. 지연 방식의 표현식 평가(필요할 때에 필요한 값을 평가 하기) 주의점 1. 지연 평가는 만병 통치약이 아니다. 오히려 성능을 나쁘게 할때가 있다.(몰아서 처리 하려고 할때) 개인적인 생각 1. 확실히 미세튜닝으로 성능 향상을 노리는것 보다, 알고리즘을 더 개선시키는게 더 효율적이다.
부재 : 경험과 프로파일러를 사용하여, 20%를 찾아 내자. 이유 1. 코드의 20% 부분이 실행시간의 80%를 찾이 하기 때문이다. 2. 제일 효과적인 부분만 찾아내어 최적화를 하는것이 제일 효율이 높다. 구현 방법 1. 어느 부위에서 병목현상이 일어날지 경험을 쌓아라. 2. 프로파일러를 잘 쓰면 병목현상 부위를 찾는데 수월할 것이다. 개인적인 생각 1. .. 프로그래머에게 있어서 효율과 성능 개선은 .. 자존심이다.
부재 : 안전성인가? 속도인가? 햄릿에 고뇌에 빠져보자. 이유 1. 예외를 안쓰면 쓴것에 비해 속도도 빠르고 크기도 작다. 2. try 블록만으로 5~10% 실행속도가 저하된다. 3. 예외 지정 기능 역시 2번과 비슷한 저하가 일어 난다. 구형 방법 : 없음 주의 점 1. try 블록과 예외지정은 꼭 필요할 부분에서만 사용 한다. 2. 예외를 발생시키는 일도 진짜 예외적인 상황이라고 판단될때만 정의한다. 3. 예외 발생은 극히 드믈기 때문에, 예외 처리 비용에 대해서는 정확히 예측하기 힘들다. 4. 예외 처리에 비용이 든다는것을 알고, 경계를 늦추지 말면서 사용 해야 한다.
부제 : 예외처리의 막장인생 소멸자 개념정리 : 소멸자가 호출되는 경우 두가지 1. 객체가 통상적인 상태에서 소멸 되는 경우(유효범위를 벗어 났을 경우, delete 됬을 경우) 2. 예외 처리 매커니즘에 의해 객체가 소멸 되는 경우 : 예외처리가 진행중일때 예외가 발생 된다면 1. terminate 함수 호출 : terminate 함수의 역활 1. 프로그램을 종료시킴 이유 1. 예외 전파의 일부분으로서 진행되는 스택 되감기 동작 중에 terminate가 호출되는것을 막기 위해 2. 소멸자의 동작을 완전히 끝내도록 하기 위해서(소멸자에서 예외가 발생하면 소멸자는 호출되지 않은 상태이다!) 구현 방법 1. 소멸자 처리 중 예외가 발생하면, 소멸자에서 그 예외를 처리해 주면 된다. 예) delete::~te..
최근댓글