Rust 기반 체스 분석 서비스에서 약 4만 건의 JSON 레코드를 SQLite에 저장하는 데 수 분이 걸리고 CPU 코어 하나가 포화되는 문제가 발생함
원인은 Linux용 SQLite를 컴파일할 때 사용한 Zig의 libc 재구현에 있었으며, strspn이 호출될 때마다 문자열 전체 길이를 측정해 토큰화 과정에서 문자열을 반복 순회함
토큰화가 진행될 때마다 남은 문자열 길이를 다시 측정해 이차 시간 복잡도가 발생했으며, 해당 사례에서 1.2MB 파일의 토큰화는 약 12,000배 느려짐
SQLite 컴파일에 Zig를 사용하지 않은 Mac에서는 문제가 나타나지 않았으
…


