KUR Creative


CSAPP독학

[CS:APP 10] C/C++에서 아주 간단한 최적화

10강|embed

루프안에서 함수 호출 줄이기

resource/CSAPP10-1.png
resource/CSAPP10-2.png
resource/CSAPP10-3.png

루프 이전에 임시변수를 선언해서 해결할 수 있다.

의도하지 않은 Memory Aliasing(어떤 포인터가 하나의 메모리를 가리키는 경우) 없애기

resource/CSAPP10-4.png
(register 접근보다) 상대적으로 느린 메모리 액세스를 2번이나 함

resource/CSAPP10-5.png
그 이유는 C는 포인터로 접근해서 메모리를 건드릴 수 있기 때문.
이를 Memory Aliasing(어떤 포인터가 하나의 메모리를 가리키는 경우)이라 한다.

resource/CSAPP10-6.png
이제 메모리 액세스는 한번 ㅎ

역시 적절한 임시변수를 선언해서 해결할 수 있다.

결론: C/C++에선 임시변수 써라

겨우 임시변수 하나 선언한 것 만으로 컴파일러가 아름다운 머신코드를 뽑아내게 해 줌
안 하면 느린 어셈 뽑아줌 ...

이것들은 거창하게 최적화라는 말을 붙일 게 아니고 그냥
야만어/쓰까어의 함정 수준..

C/C++을 주력으로 삼는다면 위 두개는 최대한 처리하는 습관을 들여야...


이 외에도 강의에는 루프 언롤링 이야기를 하는데
코드가 좀 해괴해지기 떄문에 꼭 필요할 때만 쓰는 것 같았음


보통 잘 모르는 뉴비들이 변수 선언하면 뭔가 생기니까(?) 더 느려지는 줄 알고
죽어라 임시변수 없이 장황한 코드 짜는 경우가 있는데

오히려 임시 변수를 만드는 게 많은 경우 이득이라는 점! 알아둘 것!


프로그래밍 갤러리 댓글

#from/old-blog
이전글CSAPP독학다음글
no more postsArchivekur1612212102