habr.com
59 минут назад
Разбор неожиданного узкого места в связке Rust, SQLite и Zig и способ, которым автор локализовал проблему.
Автор заметил, что запись большого набора JSON в SQLite на Linux занимала минуты и полностью загружала одно ядро.
Причина оказалась в реализации функций стандартной библиотеки, которую Zig использовал при кросс-компиляции SQLite: токенизатор многократно пересчитывал длину оставшейся строки. На JSON размером 1,2 МБ это создавало квадратичное замедление.
Временным решением стало предварительно убрать пробелы из JSON, а сборки для Linux автор перенёс в Linux-контейнеры.
Разбор неожиданного узкого места в связке Rust, SQLite и Zig и способ, которым автор локализовал проблему.