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으로 내놓게 했다. 탐색-측정-개선-문서화가 한 대화 안에서 돌아간, 그대로 복제 가능한 활용기다.