TL;DR
- 수년간 성능이 정체된 오픈소스 라이브러리 6개가 2026년 여름 몇 주 동안 최적화되며 최대 5.9배 빨라짐.
roaring,ada,fast_float,simdjson,simdutf,CRoaring에서 배열 디코딩, URL·숫자·JSON 파싱, 유니코드 처리, 비트맵 연산 성능이 크게 향상됨.- 최적화 기법 자체는 새롭지 않지만, AI 코딩 도구로 새로운 아이디어를 시도하는 비용이 낮아진 점이 성능 개선의 주요 배경으로 제시됨.
- 성능 변화는 Intel Xeon Gold 6548N 한 대에서 2024년 8월 대비 각 커밋을 재빌드하고 벤치마크한 결과로 측정됨.
- 수백만 명이 사용하는 라이브러리에서 AI 지원 최적화의 실질적 효과가 이미 나타나고 있음.
배경과 측정 방식
- 여러 오픈소스 라이브러리를 유지 관리하고 있으며, 주요 라이브러리는 다음과 같음.
ada: Node.js에서 URL 파싱fast_float: GCC 표준 라이브러리와 Chromium에서 숫자 파싱simdjson: Node.js에서 JSON 파싱simdutf: Node.js에서 유니코드 검증과 트랜스코딩- Roaring 비트맵 라이브러리: 여러 데이터베이스 엔진 내부에서 사용
- 해당 라이브러리들은 수년간 본인과 다른 기여자들이 최적화해 온 성숙한 프로젝트임.
- 오랫동안 성능이 정체된 이유는 개선 여지가 없어서가 아니라, 남은 성능 향상 하나하나에 며칠간의 신중한 작업이 필요했기 때문임.
- 2026년에 6개 라이브러리의 성능이 크게 향상됐으며, 대부분의 개선이 여름 몇 주 동안 집중됨.
- 각 라이브러리의 모든 커밋을 처음부터 다시 빌드하고 Intel Xeon Gold 6548N 한 대에서 벤치마크해 성능 변화를 측정함.
- 성능 향상 수치는 2024년 8월을 기준으로 하며, 1.0은 변화 없음, 2.0은 성능 2배를 의미함.
- 성능은 커밋 단위로만 변하므로 그래프의 선이 계단 형태로 나타남.
- 각 개선에 AI가 얼마나 관여했는지는 확인할 수 없으며, 코드에 도달한 방식보다 결과물의 품질을 기준으로 삼음.
- 사용한 AI 코딩 도구는 Claude (Opus 5), Grok, DeepSeek (V4 Pro)이며, Grok은 코딩 초기 도입자 중 하나로 사용하면서 시간이 지날수록 성능이 좋아졌다고 평가함.
1. `roaring` — 압축 비트맵, Go
roaring은 Roaring 인덱스 자료구조를 Go로 구현한 라이브러리임.- 배열로 디코딩하는 작업이 2.5배 빨라짐.
- 다중 집합 합집합 연산인 FastOr가 한 데이터셋에서 3.1배 빨라짐.
- 다중 값 반복자가 4.5~5.9배 빨라짐.
- 교집합 원소 수 계산 성능이 10% 향상됨.
- 기여자 중 한 명은 실제로 AI이며,
@perfloop계정으로 활동함. perfloop의 자문 역할을 맡고 있다는 이해관계가 공개됨.- 상당한 작업을 직접 수행했으며, Claude 사용을 공개한 Philipp Klose의 도움도 받음.
2. `ada` — URL 파싱
ada는 표준을 준수하는 URL 파서임.- 2024년 8월부터 2026년 7월까지 약 550개 커밋이 추가됐지만, 10만 개 URL 코퍼스에서 처리량은 0.54GB/s로 유지됨.
- 이후 6주 동안 처리량이 1.28GB/s로 상승해 2.4배 빨라졌으며, 단일 코어에서 초당 약 1,500만 개 URL을 처리하는 수준임.
- 대부분의 최적화는 장기 공동 저자인
@yagiznizipli가 수행함. - Yagiz는 SpaceX에서 근무하며 Cursor를 사용하고, 아마도 Grok 모델을 함께 사용하는 것으로 제시됨.
@khanthecoder와 Cloudflare의@dillon_mulroy도 각각 하나의 최적화에 기여함.- IP 주소 파싱 최적화 작업도 진행했지만, 해당 벤치마크에는 결과가 나타나지 않음.
3. `fast_float` — 숫자 파싱
fast_float은 텍스트에서 부동소수점 숫자를 파싱하는 라이브러리임.- GCC와 대부분의 웹 브라우저에 포함됨.
- 15개월 동안 성능이 정체된 뒤, 2026년 3월부터 7월까지 한 파일에서는 43%, 다른 파일에서는 70% 성능이 향상됨.
canada.txt: 긴 좌표 데이터에서 43% 향상mesh.txt: 짧은 좌표 데이터에서 70% 향상- 최적화 기여자는
@kolemannix와 Redis의@fcosta_oliveira임.
4. `simdjson` — C++26 리플렉션을 활용한 JSON 직렬화·역직렬화
simdjson에 최근 C++26 정적 리플렉션(static reflection) 지원이 추가되어 자체 구조체를 접착 코드 없이 직접 직렬화하고 파싱할 수 있음.- 2026년 2월 이후 직렬화 성능이 다음과 같이 향상됨.
twitter.json: 1.6배 향상citm_catalog.json: 2.1배 향상- JSON을 구조체로 직접 변환하는 역직렬화 성능은 상대적으로 modest한 수준으로 향상됨.
twitter.json: 10% 향상citm_catalog.json: 14% 향상- 리플렉션 코드는 2026년 초부터만 존재함.
citm_catalog.json직렬화에서 바이트당 명령어 수가 6.1개에서 3.1개로 감소했으며, 이는 처리량 상승 비율과 거의 정확히 일치함.- Microsoft의
@GeimanThiesen이 직렬화 측면의 대부분을 작업했으며, 파싱 개선 작업을 주로 지원함. - Francisco는 Claude를 사용함.
5. `simdutf` — 유니코드 검증과 트랜스코딩
simdutf는 UTF-8, UTF-16, UTF-32를 검증하고 트랜스코딩하며, Base64 인코딩과 디코딩도 수행함.- ASCII 검증 처리량이 83GB/s에서 160GB/s로 향상됨.
- UTF-16 검증 처리량이 62GB/s에서 102GB/s로 향상됨.
- Base64 디코딩 성능이 17% 향상됨.
- 작업은 다시 참여한
@yagiznizipli와 함께 수행함. - Gaspard Petit과 Shreesh Adiga도 해당 벤치마크에는 나타나지 않는 다른 뛰어난 최적화를 수행함.
6. `CRoaring` — 압축 비트맵, C
CRoaring은 Roaring 비트맵을 C로 구현한 라이브러리임.- 저장소의 실제 데이터셋에서 다음과 같은 성능 향상이 나타남.
- 멤버십 테스트(
contains): 2.4배 향상 - 64비트 비트맵의 원소 수 계산: 4.9배 향상
- 64비트 비트맵 순회: 1.9배 향상
- 밀집 비트맵의 배열 디코딩: 2.2배 향상
- 합집합 연산: 13~16% 향상
- 작업은 Andrei Gudkov와 함께 수행함.
무엇이 일어났나
- 사용된 기법은 모두 잘 알려진 기술임.
- 짧은 기간에 최적화가 잇따른 이유는 새로운 아이디어를 시도하는 비용이 낮아졌기 때문이라는 관점이 제시됨.
- 소프트웨어에서 AI의 위험성에 관한 논의가 많지만, 인간은 한쪽 측면의 내기 오류에 취약해 단점을 볼 때 장점을 무시하는 경향이 있음.
- 자동차가 사람을 죽이기도 하지만 구급차가 사람을 살리기도 하는 것처럼, AI의 효과도 위험과 이점 양쪽에서 평가할 필요가 있음.
- 이번 사례의 이점은 구체적이며, 수백만 명이 사용하는 라이브러리가 2026년 여름 실제로 더 빨라짐.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요