prismBETA
← 개발자 브리핑
2026-11-02 · 02 / 07

SQLite 확장, C냐 Rust냐 — Claude로 직접 비교

Simon Willison이 문자열을 숫자로 바꾸는 parse_number() SQLite 확장을 C와 Rust로 각각 만들어 Claude(Opus 5.5)로 비교했다. C 확장은 .so가 14KB로 작았지만 Rust(298~321KB)가 더 빨랐는데, Rust의 숫자 파서가 C strtod보다 2배 빨랐기 때문이다. 이어 'C 파서를 직접 짜서 Rust를 따라잡아 보라'고 지시해 200만 행 기준 행당 처리비용까지 반복 개선하고, 결과를 리서치 리포트로 정리하게 했다.

parse_number()는 '-$1,234.56'이나 '12.5%' 같은 문자열에서 기호·구분자를 떼어 합산·정렬 가능한 수치로 바꾸는 SQLite 커스텀 함수다. Willison은 이걸 C와 Rust 두 갈래로 만들게 하고, 생성된 .so 크기와 속도를 나란히 재게 했다.

결과는 직관과 어긋났다. C 확장은 14KB로 Rust(Rusqlite 321KB, sqlite-loadable-rs 298KB)보다 훨씬 작았지만 속도는 Rust가 앞섰다. 원인은 Rust의 숫자 파서가 C의 strtod보다 약 2배 빨랐던 것으로, 그는 다시 'strtod를 넘어서는 C 파서를 직접 작성하라'고 지시해 200만 행 기준 행당 비용을 끌어내렸다.

마지막엔 자신의 simonw/research 저장소를 클론해 같은 형식의 리서치 리포트로 정리하고 zip으로 내놓게 했다. 탐색-측정-개선-문서화가 한 대화 안에서 돌아간, 그대로 복제 가능한 활용기다.

투표
새 프로젝트, 어느 언어로 짜게 하세요?
이 글이 도움이 되셨나요?
이야기의 흐름1
매주 월요일 아침 갱신 · 요약은 AI가 생성하며 출처 원문을 확인하세요.