https://www.hanbit.co.kr/store/books/look.php?p_code=B8975427001
C++ 최적화 : 최고 성능을 구현하는 10가지 검증된 기법
빠른 코드를 작성하는 시간은 느린 코드를 작성하는 시간보다 결코 길지 않다. 이 책은 올바른 코드를 구현하면서도 빠른 C++ 프로그램을 만드는 최적화 방법을 소개한다. 습관적으로 쓰는 C++ 구
www.hanbit.co.kr
해당 책의 난이도는 중고급 으로 분류되어 있다. (한빛 공식사이트 기준)
주요 내용
최적화에 대한 간단힌 팁들만 정리해 보았다.
<문자열 최적화>
Q. 다음 두 코드 중에서 무엇이 빠를까?
(1번) :
string str = "Optimized C++ book page 101";
string str_new = "";
for (int i = 0; i < str.size(); i++)
{
str_new = str_new + str[i];
}
(2번) :
string str = "Optimized C++ book page 101";
string str_new = "";
for (int i = 0; i < str.size(); i++)
{
str_new += str[i];
}
로직은 동일하니까 같은 거 아닌가요 라고 할수 있지만 실제로는 후자가 더 빠르다.
chrono 를 통해 타이머 설정하고 측정 해 보면
(1번): TIME: 91500 ns
(2번): TIME: 15400 ns
으로 2번이 더 빠른것을 확인 할 수 있다. (실행할 때마다 실행 시간은 달라지나 2가 더 빠르다)
지금 코드에서는 미미한 차이긴 하나 더 긴 문자열을 처리하고 해당 코드가 자주 반복될수록 이 차이는 커질 것이다.
이렇게 차이가 나는 이유는 이렇다.
첫 번재 코드는 str_new + str[i] 로 임시 객체를 만든 후 그것을 다시 str_new 객체에 대입한다. 이 과정에서 힙 메모리 할당과 문자열 복사가 반복적으로 일어난다.
반면 두 번째 코드는 기존 버퍼에 덧붙이므로 추가 메모리 할당이 일어나지 않는다.
후기
중고급 난이도 책은 처음 접해 보는데 역시 아직은 어려운것 같다.
먼저 중고급 난이도 라서 C++ 기본 구현 관련 내용은 나오진 않고, 여러 파트로 나누어 최적화 방법에 대해 사례를 들어 설명한다.
그리고 단순 C++ 뿐 아니라 OS 나 하드웨어 관련된 내용도 나와(비중이 크진 않다) 어느정도 기초 지식이 있어야 이해하기 좋을 것 같다.물론 최적화를 위해선 결국 저런 레벨에 대한 이해가 필요할 것 같다
흔히 어떤 알고리즘을 사용하면 시간 복잡도가 뭐 이니이니 어떤 코드가 어떤 코드보다 빠르다 라고 생각 하는 경우가 많은데, 실제 pc로 실행 시에는 결과가 다르게 나올 수 있다는 것도 보여준다.
해당 부분에 대한 내용을 이 책에선 예제 코드와 그 코드를 개선 했을 때, 얼마의 시간이 걸리는 지에 대해서 비교하면서 확인 시켜 준다.
내용이 나에게는 어려워 한번만 가볍게 읽었는데 이해 하지 못한 부분이 더 많다. 그래도 유용한 부분이 많아서 파트별로 자세히 읽어보며 더 공부해 보고 싶다.
'독서 > IT, 개발' 카테고리의 다른 글
혼자 공부하는 컴퓨터구조 + 운영체제 리뷰 (1) | 2025.05.30 |
---|