# Advent of Compiler Optimisations 2025

> Clean Markdown view of GeekNews topic #24797. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=24797](https://news.hada.io/topic?id=24797)
- GeekNews Markdown: [https://news.hada.io/topic/24797.md](https://news.hada.io/topic/24797.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-12-03T12:35:35+09:00
- Updated: 2025-12-03T12:35:35+09:00
- Original source: [xania.org](https://xania.org/202511/advent-of-compiler-optimisation)
- Points: 1
- Comments: 1

## Topic Body

- **C/C++ 컴파일러 최적화**를 주제로 한 25일간의 어드벤트 캘린더 프로젝트  
- 12월 1일부터 25일까지 매일 **블로그 글과 영상**을 통해 하나의 최적화 사례를 소개  
- 각 게시물은 **적용 시점, 어셈블리 해석, 비적용 상황**까지 구체적으로 다룸  
- **x86-64 중심**이지만 64비트 및 32비트 **ARM 아키텍처**도 일부 포함  
- 컴파일러의 동작 원리를 배우고자 하는 개발자에게 **교육적 가치가 높은 시리즈**   
  
---  
### Advent of Compiler Optimisations 2025 프로젝트 개요  
- 약 1년간 준비된 프로젝트로, 12월 한 달간 매일 새로운 **컴파일러 최적화 사례**를 공개  
  - 12월 1일부터 25일까지 하루 한 편씩 블로그 글과 영상을 게시  
  - 각 콘텐츠는 **C 또는 C++ 코드**를 기반으로 컴파일러가 수행하는 흥미로운 최적화를 다룸  
- 각 최적화는 **적용 조건, 어셈블리 코드 해석, 적용되지 않는 경우**까지 상세히 설명  
  - 단순한 코드 비교가 아니라 실제 컴파일러의 동작을 분석하는 형태  
  
### 다루는 기술 범위  
- **저수준 아키텍처별 트릭**부터 **고수준 최적화 기법**까지 폭넓게 포함  
  - 주로 **x86-64**를 다루지만, **64비트 및 32비트 ARM** 관련 내용도 일부 포함  
- 컴파일러의 내부 동작과 코드 생성 과정을 학습할 수 있는 실용적 자료로 구성  
  
### 참여 및 시청 방법  
- 블로그의 **AoCO2025 태그**를 통해 모든 게시물을 추적 가능  
- **YouTube 채널** 또는 **전용 재생목록**을 통해 영상 시청 가능  
  - YouTube 링크: `https://www.youtube.com/mattgodbolt`  
  - 재생목록 링크: `https://youtube.com/playlist?list=PL2HVqYf7If8cY4wLk7JUQ2f0JXY_xMQm2`  
  
### 프로젝트 의의  
- 약 1년간의 준비 끝에 완성된 대규모 개인 프로젝트로, **컴파일러의 정교함과 효율성**을 탐구하는 목적  
- 개발자들이 **컴파일러 최적화의 실제 작동 원리**를 이해하고, 코드 작성 시 이를 활용할 수 있도록 돕는 교육적 시도  
- 작성자는 “컴파일러가 얼마나 놀라운지를 배우는 즐거움”을 함께 나누고자 함  
  
### Matt Godbolt 소개  
- 시카고에 거주하는 **C++ 개발자**로, **Hudson River Trading**에서 근무  
- **Two’s Complement** 팟캐스트 공동 진행자  
- **Mastodon**과 **Bluesky**에서 활동 중  
- 블로그 콘텐츠는 **Creative Commons BY-NC 3.0 Unported** 라이선스로 배포됨

## Comments



### Comment 47121

- Author: neo
- Created: 2025-12-03T12:35:36+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=46119500) 
- Matt의 **컴파일러 최적화**를 살펴본 후, 내가 그와 진행한 [인터뷰](https://corecursive.com/godbolt-rule-matt-godbolt/)도 확인해보면 좋겠음  
  내가 믿게 된 건 이거임: 자신이 편한 **추상화 레벨**에서 일하되, 그 아래 계층도 이해해야 함  
  예를 들어 C 프로그래머라면 C 런타임이 운영체제와 어떻게 상호작용하는지 알아야 함. 모든 세부사항은 몰라도 되지만, 문제가 생겼을 때 어디서부터 봐야 할지 감을 잡을 정도는 필요함  
  Matt가 쓴 [ACM Queue 기사](https://queue.acm.org/detail.cfm?id=3372264)도 오래된 글이지만 이런 최적화 개념을 이해하기에 아주 좋은 입문서임
  - “자신이 일하는 계층 바로 아래를 이해하라”는 말을 대학 시절 교수님께 들었음. 그게 내 커리어에 큰 도움이 되었음  
    예를 들어 Java를 다룰 때 JVM을 이해하니 **의료 소프트웨어**의 성능을 훨씬 잘 최적화할 수 있었음. 그리고 단순히 그 아래 계층을 이해하는 게 재미있기도 함
  - 고마워 Adam 😊

- 그는 명백한 **도메인 전문가**임에도 불구하고, 처음부터 복잡한 x86 명령어 세트로 뛰어들지 않고 기본적인 부분부터 차근차근 설명하는 점이 인상적임

- Matt Godbolt은 C와 C++ 커뮤니티의 진정한 **보석** 같은 존재임  
  Compiler Explorer와 그의 기여 덕분에 많은 개발자들의 세상이 더 나아졌다고 생각함
  - 뭐라고?! Godbolt이 실제 사람이라고!?

- **Advent of Computer Science Advent Calendars, Day 2**를 보고 있음
  - 이제 그 시점에 도달한 것 같음

- 나는 SQLite가 사용하는 [**코드 통합(amalgamation)** 기법](https://sqlite.org/amalgamation.html)에 관심이 많음  
  SQLite 팀에 따르면 이 방식만으로도 5~10%의 성능 향상이 있다고 함. Matt가 세션 중에 이 주제를 다뤄줬으면 좋겠음
  - 이건 꽤 일반적인 주제이고, 사실상 **컴파일러 최적화**라기보다는 “** unity build**”라고 부르는 빌드 방식임  
    참고: [Unity build 위키](https://en.wikipedia.org/wiki/Unity_build)
  - 요즘은 unity build보다 **LTO(Link Time Optimization)** 가 더 많이 쓰임  
    그래도 LTO가 비증분 빌드에서는 느릴 수 있어서, 일회성 빌드에서는 여전히 unity build가 유용함

- 25년 동안 소프트웨어 개발을 해왔지만, 여전히 내가 **최적의 컴파일러 플래그**를 쓰고 있는지 궁금함
  - 내 경험상, 플래그는 **적을수록 좋음**  
    대부분의 경우 `-O2`면 충분함. 컴파일러가 업데이트될 때마다 내부 최적화가 개선되므로, 개발자가 직접 세세히 조정할 필요는 거의 없음  
    또, 잘못된 **벤치마크**에 기반해 플래그를 추가하는 건 위험함. 시스템 상태에 따라 1~2% 성능 차이는 흔한 일임  
    코드 구조가 바뀌면 캐시 친화성이 달라져서 성능이 변할 수도 있음. 즉, 플래그 때문이 아니라 코드 배치 덕분일 수도 있음

- 남은 포스트들이 기대됨. 오늘 아침엔 SBCL에 `(+ base (* index scale))`과 `(+ base (ash index n))` 패턴을 단일 **LEA 명령어**로 최적화하도록 가르쳐봤음. Day 2에서 배운 내용을 바로 적용해본 셈임

- Godbolt 콘텐츠는 **아무리 많아도 부족하지 않음**

- 정수 상수로 나누는 연산을 다뤄줬으면 좋겠음. *Hacker’s Delight*의 해당 챕터가 정말 훌륭하지만, 일반 독자에게는 조금 어렵게 느껴짐

- **컴파일러 덕후들을 위한 Advent of Code** 같음  
  매일 한 입 크기의 최적화 레슨을 통해 직관을 쌓는 포맷이 너무 좋음  
  컴파일러가 **무엇을, 왜** 하는지를 이해하면 어떤 언어를 쓰든 더 나은 프로그래머가 될 수 있음
