Skip to main content

Command Palette

Search for a command to run...

DoD식 사고방식

Updated
1 min read

DoD의 핵심은

실제 데이터에 맞는 설계를 하자

이다.

잘못 이해하면

메모리는 엄청나게 느리므로 메모리 접근을 줄이는 게 매우 중요하다.

이 핵심인 것처럼 보일 수 있는데, 이것은 위의 데이터에서 파생된 것이다.


이 글을 쓰는 건 오늘 DoD식 사고방식으로 성능 문제를 우아하게(?) 해결했기 때문이다. PR은 https://github.com/swc-project/swc/pull/6523 이다. 당연히 영어이므로 간략하게 설명하자면, 소스맵을 생성할 때 크기가 1바이트가 아닌 문자열들을 찾아서 column을 약간 바꿔줘야한다. swc는 파일을 로딩할 떄 미리 multi byte 문자열들을 계산해놓는다. 근데 기존 코드는 계산된 크기들을 매번 루프를 돌면서 더했고, 그게 성능 문제의 원인이 되었다. 그리고 이걸 최적화하는 방법은 당연하지만 캐싱이다.

내가 만든 PR은 아니지만, 캐싱을 하겠다는 생각만 하면 https://github.com/swc-project/swc/pull/6524 과 같은 PR이 나온다. 하지만 내가 만든 PR은 여기서 한발짝 더 들어갔다.

  • 소스맵을 만들 때엔, 한 파일 내에선 원본 문자열을 가리키는 커서가 단조 증가한다.

  • 소스맵 내부에서 입력 파일들은 (거의) 한번에 한개씩 처리된다.

이 점들에 착안하면, 해시맵 같은 걸 쓰지 않고 아주 간단한 캐싱이 가능하다. 위에서 말한 매번 루프를 돌면서 더했고에 약간의 로직만 추가하면 되는 것이다. 파일이 한번에 하나씩 처리될 확률이 매우 높고 이 파일을 가리키는 커서의 값이 단조 증가하므로 기존 계산 결과와 기존에 계산할 때 몇번째 아이템까지 계산했는지만 기억하면 되는 것이다.

DoD 관련 영상을 볼 때, 도입부에 이런 내용이 있었다. 처음 개발을 시작했을 땐 실력이 엄청나게 늘었고, 성장 곡선이 자연스럽게 완만해졌다가 DoD를 알게 되고 다시 실력이 엄청나게 늘었다는 얘기. 나도 그걸 느낀다. DoD는 진짜 많은 생각이 들게 하는 사고방식이다.

More from this blog

한국의 학벌에 대한 생각

내 블로그의 제목이 kdy1: The way I think 인만큼 앞으로는 내 생각을 더 자주 올리려고 한다. 한국 기준으로, 학벌은 사람을 볼 때 꽤나 유용한 지표이지만, 절대적이지는 않다. 경험적인 얘기일 뿐이지만, 성균관대학교 자퇴생으로서 느낀 것들이 몇 가지 있다. 대학까지 간 사람의 학벌은 학습 능력 x 성실함 에 대체로 비례한다. 그래서 의미가

Apr 3, 20261 min read

인간 지능에 대한 메모장

최종 업데이트: 2026/03/15 지능의 유전 현재 인류 기준으로, 고지능자는 고지능 유전자가 많이 겹친 사람이다. 지능의 유전엔 X 염색체가 매우 중요한 역할을 한다. 그리고 이게 남자와 여자의 지능 분포 차이를 만든다. 극상위권에 여자가 거의 없는 이유가 이것이다. 고지능 X 염색체가 여자한테서 발현되려면 2개가 있어야 한다. 이는 인간의 생

Mar 15, 20262 min read

Ai 코딩 팁 2 (한국어)

발표 자료: https://gamma.app/docs/AI--2a52e7tk3eb1ch1 AI 활용법 관련해서 간단하게 발표를 했다. 발표 자료 앞쪽은 전에 블로그에 올린 글이랑 같은 내용이다. 이 글에서는 기존 글에서 다루지 않은 내용들을 다루겠다. 에러 메시지 및 로깅 구체적 타입 및 스키마 활용 any 타입은 사람에게도 위험하지만, AI에게는 더 위험하다. 마찬가지로, JSON.parse처럼 아무 제약 없는 파싱 느슨한 인터페이스 ...

Jan 30, 20265 min read

kdy1: The way I think

233 posts