최종보스 IF

IF는 잡몹이다.
내 눈에도 그렇다.
태초 마을 입구에서 바로 만나게 되는 그런 잡몹 중 하나일 뿐이다.

그런데 기계는 다르다.
IF만 만나면 비명을 지른다.

보기만 해도 현기증 나는 함수들이 많다.
MMULT 같은 거 말이다.
그럼에도 기계가 저런 걸 어렵다고 하는 걸 본 적 없다. 그런데 IF만큼은 다르다.
스치는 것만으로도 성능이 반토막 난다.

IF와 IF의 변형들 모두 그렇다.

도대체 왜???

너무 당연한 말이지만 기계는 정직할 뿐이다.
의심이 든다. "눈에 보이는 게 사실이 아닐 수도 있다."

어떤 나라의 왕이 있었다.
나라가 망할 지경이 되어도
"곳간은 가득 차고, 백성들은 주상전하를 칭송하옵니다."

'인의장막' 때문에 진실을 모를 수 있다.
차라리 눈을 감고 비명을 듣는 게 오히려 진실일 수 있다.

그렇게 눈을 들어 주변을 보니 생경한 풍경이 펼쳐져 있었다.

  • Rust (엄격한 소유권 지시): "사고 날까 봐 무서우니까, 아예 운전대 못 잡게 손을 묶어버릴게!" (엄격함)

  • Go (제한된 IF): "말끝마다 '문제없지?'라고 백 번씩 물어봐. 안 그러면 다음 칸 안 보내줄 거야." (노가다)

  • Elixir (패턴 매칭): IF 대신 (Pattern Matching) 트릭을 써서 IF를 우회.

  • SQL (선택적 필터): IF를 포기하고 CASE WHEN으로 대체. "난 '만약에' 같은 거 몰라. 다 가져오든가, 다 버리든가!" (무책임)

  • Lisp: IF를 포기하고 필터 강제.

  • R (배열 처리): "계산하기 귀찮으니까 일단 메모리에 다 때려 넣어. 그러다 터지면 내 책임 아님!" (폭식)

흔히 쓰는 C++, 엑셀, Python처럼 오래된 언어들은 여전히 고전적인 문법을 쓰지만, 최신 언어나 성능을 추구하던 언어들은 IF가 성능 하락의 주범이라는 사실을 인지하고 피하기 위해 온몸 비틀기를 하고 있었다.

여전히 내 눈엔 IF가 잡몹으로 보이지만, 간접적 증거들은 그렇지 않다.
기계가 지르는 비명, 최신 언어들의 온몸 비틀기.


현경(玄境)의 고수

LLM에게 물어보니 '분기(Branch)' 때문이라고 한다.
하지만 어셈블리 명령어 수준에서 분석해도 여전히 보이지 않는 건 마찬가지였다.

'역량' 부족인가?

문득 무협물이 떠올랐다. '너무 강한 놈은 오히려 보이지 않는다.'
'현경'의 고수는 알아보기도 힘들다는 그런 말 말이다.
소설 속 말장난일 뿐이지만, 느껴지지 않는 건 사실이다.

직감의 영역은 아닌 거 같다. 이럴 땐 해보는 게 최고다.
기계에 빙의해 데이터를 넣고 하나씩 돌려 보았다.
이건 끈기의 영역이다. '아, 이게 레지스터 여기에 박히는 거구나' 하면서 말이다.

직관이 벗어나는 곳을 경험해 본 적 있었다.
**'MMULT 던전'**이라 불리는 곳이다.
매우 적대적인 곳이다. 배열을 모르면 숨도 못 쉬는 곳이다.
엑셀 2019를 쓰는 사람이라 더더욱 그랬다.

그때가 떠올랐다.
그래도 여긴 MMULT 던전에 비하면 뒷동산 나들이 수준이다.

MMULT 던전에서 AI에게 이런 말을 한 적이 있다.

"진짜 어렵네, 근데 넌 왤케 잘하냐?"

뜻밖의 답이 돌아왔다.

"여기가 제 고향입니다. 휴먼."


여기선 IF에 대해 물어보았다.

"이게 어렵다고?"

"쉬운 게 아닙니다. 휴먼... 어쩌구 저쩌구..."


CPU의 도박

잘 알아듣진 못했지만 이 부분은 놀라웠다.
CPU 설계의 핵심이 '분기예측'이며 이게 성능을 결정한다고 한다.
IF 때문이란다.

IF 문을 만나면 무조건 멈춰야 하기 때문에 차라리 '예측'이라는 도박을 한다는 것이다.
프로그래밍 언어만 발버둥 치는 줄 알았는데,
CPU 역시 IF란 놈을 상대하기 위해 발버둥 치고 있었다.

'분기예측'이란 기능을 들었을 때,
IF가 워낙 자주 쓰이니 전용 회로를 따로 넣었겠거니 생각했는데 그게 아니었다.

전체 회로를 멈추지 않기 위해 차라리 목숨 걸고 도박 하고 있었던 것이다.

절대지존 CPU가 모든 함수 위에 군림하는 줄 알았는데,
IF 상대로는 그게 아니었다.

그래서 프로그램에서 IF만 없애도 성능이 몇 배씩 뛴다고 한다.

애플이 소프트웨어에 강하다는 말이 구체적으로 이런 뜻이었다.
보통 운영체제 덕분에 최적화를 잘한다고들 하지만,
구체적으로는 운영체제를 가진 힘으로 IF를 줄였다는 뜻이었다.

IF만 피하면 발열이 1/3로, 성능은 몇 배씩 뛰기 때문이다.
애플 특유의 부드럽고 자연스러운 터치의 비밀이었다.


절세비급의 발견

"근데 브랜치리스? 그게 그렇게 대단한 거였어?"

AI로부터 정말 대단한 기술이라는 답을 들었다. 뜻밖이었다.
전혀 다른 이유로 IF를 잡는 노하우를 이미 갖고 있었기 때문이다.
CSE free 때문에 브랜치리스(Branchless) 기법을 익히게 된 건데,
그게 그렇게 대단한 건 줄 몰랐다.

몰락해 가는 엑셀 2019 가문 구석탱이,
아무도 거들떠보지도 않는 먼지 쌓인 책 같은 거였는데
알고 보니 **'절세비급'**

어쩐지 이걸 제대로 쓰는 새끼가 없더라니...

나도 나름 초고수다. 2019가 워낙 허접해서 그렇지,
그거 들고 MMULT 던전 처 들어가곤 했다.

브랜치리스 기법에 대해 난이도를 크게 느낀 적 없었는데
(사실 CSE free가 몇 배 더 어렵다)

아무튼 어셈블리 수준 분석에서도 실패했던 돌파구는
전혀 예상치 못한 곳에서 발견되었다. 
판다스 merge를 엑셀로 분석하고, C언어의 포인터를 조사하던 과정에서 였다.

IF만 단독으로 분석했을 때는 실패했지만,
기계에 대한 이해가 높아지며 드디어 IF란 놈이 보이기 시작했다.

IF는 하나가 아니었다.
단지 우리눈에만 그렇게 보인 거 뿐이다.
기계 입장에선 하나가 아니었다.

수요 없는 공급.