처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.08.05 29

'클린 코드'를 지켰더니 15배 느려졌다? 논쟁을 부른 성능 실험

Hacker News 원문 보기
'클린 코드'를 지켰더니 15배 느려졌다? 논쟁을 부른 성능 실험

착한 코드가 느린 코드라니, 무슨 소리일까요

개발 공부를 하다 보면 꼭 듣게 되는 말이 있어요. "클린 코드를 쓰세요." 로버트 마틴(Uncle Bob)의 책 『클린 코드』에서 정리된 원칙들인데요. 함수는 작게 쪼개고, if문이나 switch문 대신 다형성(polymorphism)을 쓰고, 내부 구현은 모른 채 인터페이스만 바라보라는 식의 규칙들이죠. 대부분의 회사 코드리뷰에서도 이런 기준으로 코드를 평가하잖아요.

그런데 게임 엔진 개발자로 유명한 케이시 무라토리(Casey Muratori)가 이 통념에 정면으로 도전하는 글을 썼어요. 제목부터 도발적인데요, "클린 코드, 끔찍한 성능(Clean Code, Horrible Performance)". 클린 코드 규칙을 그대로 따르면 코드가 얼마나 느려지는지 직접 측정해서 보여준 거예요. 2023년 글이지만 지금도 성능 얘기가 나올 때마다 다시 소환되는 고전이에요.

실험은 이렇게 진행됐어요

무라토리는 클린 코드 교과서에 나올 법한 전형적인 예제를 골랐어요. 정사각형, 직사각형, 삼각형, 원 같은 도형들의 넓이를 계산하는 코드인데요. 클린 코드 방식이라면 Shape라는 부모 클래스를 만들고, 각 도형이 이를 상속받아 자기만의 Area() 함수를 구현하겠죠. 이게 뭐냐면, "도형 종류가 뭔지 일일이 묻지 말고, 그냥 '넓이 내놔'라고 시켜라"는 객체지향의 정석적인 설계예요.

이걸 옛날 방식, 그러니까 switch문으로 도형 타입을 구분해서 계산하는 코드로 바꿨더니 약 1.5배 빨라졌어요. 여기서 멈추지 않고 한 발 더 나갔는데요. 사실 이 도형들의 넓이 공식은 전부 "계수 × 가로 × 세로" 형태로 통일할 수 있거든요. 그래서 도형별 계수를 미리 표(lookup table)에 넣어두고 곱셈만 하는 코드로 바꿨더니 다형성 버전보다 10배 이상 빨라졌고, 최적화를 더 얹으니 격차는 15배, 많게는 20배 이상까지 벌어졌어요.

무라토리의 핵심 주장은 이거예요. 이 정도 성능 차이는 하드웨어 발전 속도로 환산하면 십수 년치에 해당한다는 것. 다시 말해 클린 코드 규칙을 따르는 순간, 여러분은 10년 전 컴퓨터에서 프로그램을 돌리는 것과 비슷한 대가를 치르고 있다는 거죠.

왜 이렇게 차이가 날까요

이유는 CPU가 일하는 방식에 있어요. 가상 함수(virtual function) 호출은 "이 객체의 실제 타입을 확인하고, 함수 주소를 표에서 찾아서, 그 주소로 점프"하는 과정을 거치는데요. CPU 입장에서는 다음에 어떤 코드가 실행될지 예측하기 어려워서 처리 파이프라인이 자꾸 끊겨요. 반면 switch문이나 테이블 방식은 데이터가 메모리에 쭉 붙어 있고 실행 흐름도 단순해서, CPU가 데이터를 미리 가져오고 여러 연산을 한꺼번에 처리하기 좋거든요. 요즘 CPU는 이런 '예측 가능한 코드'에서 진짜 실력이 나와요.

그럼 클린 코드는 버려야 할까요?

여기서부터가 재미있는 논쟁 포인트예요. 반론도 만만치 않거든요. 첫째, 대부분의 서비스는 CPU 연산이 아니라 데이터베이스나 네트워크 대기 시간이 병목이에요. 웹 API에서 도형 넓이 계산이 15배 빨라져도 사용자는 차이를 못 느끼죠. 둘째, 코드는 기계만 읽는 게 아니라 사람이 읽어요. 유지보수하기 쉬운 코드가 장기적으로는 더 빠른 개발 속도를 만들기도 하고요. 실제로 무라토리는 이 글 이후 로버트 마틴과 직접 긴 서면 토론을 했는데, 결국 두 사람의 전제가 다르다는 게 드러났어요. 게임 엔진처럼 성능이 곧 제품인 분야와, 비즈니스 로직이 자주 바뀌는 분야는 우선순위가 다를 수밖에 없거든요.

한국 개발자에게 주는 시사점

이 글의 진짜 가치는 "클린 코드를 버려라"가 아니라 "규칙을 맹목적으로 믿지 말고, 비용을 알고 쓰라"는 데 있어요. 다형성, 추상화, 작은 함수 같은 도구에는 분명한 성능 비용이 있고, 그 비용이 우리 서비스에서 의미 있는 수준인지는 측정해봐야 아는 거거든요. 특히 게임, 영상 처리, 대용량 데이터 파이프라인, 온디바이스 AI처럼 CPU를 갈아 넣는 분야에 관심이 있다면, 이 글과 함께 데이터 지향 설계(data-oriented design)라는 키워드를 꼭 공부해보세요. 그 세계로 들어가는 좋은 입구가 되어줄 거예요.

정리하면, 클린 코드의 규칙은 공짜가 아니라는 것. 여러분의 팀에서는 가독성과 성능 사이의 트레이드오프를 어떤 기준으로 정하고 계신가요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

AI 도구, 직접 활용해보세요

AI 시대, 코딩으로 수익을 만드는 방법을 배울 수 있습니다.

AI 활용 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.