🚀 ИИ-агент ускорил SQLite до 59% меньше чем за 8 часов
Ускорить SQLite хотя бы на 5% уже было бы серьёзным результатом. Это один из самых зрелых и оптимизированных проектов в мире - его команда почти 20 лет выжимает из кода каждую долю производительности.
Но AI-агент KISS Sorcar менее чем за 8 часов и с затратами меньше $150 добился заметного ускорения сразу в нескольких типах нагрузки.
Результаты:
- 2,06× быстрее в официальном
- 1,90× в TATP — транзакционная OLTP-нагрузка
- 1,30× в Star Schema Benchmark — аналитические запросы
- 1,25× в
Агент нашёл места, где стандартная конфигурация SQLite несла лишние расходы — особенно при записи транзакций на диск.
После этого он:
- изменил код и настройки
- прогнал бенчмарки
- проверил свои же изменения на ошибки
- сохранил совместимость с существующими тестами
Более миллиона тестов SQLite продолжают проходить.
анализ зрелой кодовой базы → поиск узких мест → изменение реализации → бенчмарки → проверка собственных решений.
GitHub:
https://github.com/ksenxx/sqlite-optimized/
Blog: https://kisssorcar.github.io/blog/sqlite-optimization-blog.html
#AI #SQLite #Programming #CodingAgents #Performance #OpenSource
Ускорить SQLite хотя бы на 5% уже было бы серьёзным результатом. Это один из самых зрелых и оптимизированных проектов в мире - его команда почти 20 лет выжимает из кода каждую долю производительности.
Но AI-агент KISS Sorcar менее чем за 8 часов и с затратами меньше $150 добился заметного ускорения сразу в нескольких типах нагрузки.
Результаты:
- 2,06× быстрее в официальном
speedtest1 (~30 тыс. операций)- 1,90× в TATP — транзакционная OLTP-нагрузка
- 1,30× в Star Schema Benchmark — аналитические запросы
- 1,25× в
kvtest — работа с BLOB и дисковым I/OАгент нашёл места, где стандартная конфигурация SQLite несла лишние расходы — особенно при записи транзакций на диск.
После этого он:
- изменил код и настройки
- прогнал бенчмарки
- проверил свои же изменения на ошибки
- сохранил совместимость с существующими тестами
Более миллиона тестов SQLite продолжают проходить.
анализ зрелой кодовой базы → поиск узких мест → изменение реализации → бенчмарки → проверка собственных решений.
GitHub:
https://github.com/ksenxx/sqlite-optimized/
Blog: https://kisssorcar.github.io/blog/sqlite-optimization-blog.html
#AI #SQLite #Programming #CodingAgents #Performance #OpenSource
👍11❤4🔥4👎1👏1🤔1
⚡ В SQLite есть кусок кода, который выглядит «грязно», но оставлен таким специально ради скорости.
Каждый SQL-запрос SQLite сначала компилируется в байткод, а затем выполняется собственной виртуальной машиной VDBE.
Внутри — большой цикл диспетчеризации с почти 200 opcode.
И вот интересный момент: SQLite использует обычные
В исходниках прямо написано:
«Код использует неструктурированные goto и выглядит не очень чисто. Но это сделано не из-за плохого стиля, так быстрее».
По замерам разработчиков, такой подход ускоряет
То есть здесь читаемость сознательно пожертвовали ради производительности.
Хорошее напоминание: в системном коде «красивее» не всегда значит «быстрее».
#SQLite #C #Databases #Performance #SystemsProgramming
Каждый SQL-запрос SQLite сначала компилируется в байткод, а затем выполняется собственной виртуальной машиной VDBE.
Внутри — большой цикл диспетчеризации с почти 200 opcode.
И вот интересный момент: SQLite использует обычные
goto, чтобы быстро прыгать между общими ветками выполнения.В исходниках прямо написано:
«Код использует неструктурированные goto и выглядит не очень чисто. Но это сделано не из-за плохого стиля, так быстрее».
По замерам разработчиков, такой подход ускоряет
sqlite3_step() примерно на 1,5%.То есть здесь читаемость сознательно пожертвовали ради производительности.
Хорошее напоминание: в системном коде «красивее» не всегда значит «быстрее».
#SQLite #C #Databases #Performance #SystemsProgramming
🔥7❤4🥰2👍1
🔥 Одна строка в конфиге ускорила production-ответ с 126–230 мс до менее чем 9 мс
Paweł Urbanek собрал очень практичный гайд по профилированию Rust, где оптимизации идут не по принципу «что интереснее», а по реальной отдаче.
Из кейсов:
Три последовательных HTTP-вызова →
Неправильно настроенный Brotli в
Ещё жёстче кейс с
И отдельная классика Tokio: unbounded channel молча накопил 73 сообщения, потому что consumer не успевал. Никакой ошибки, просто медленное движение к OOM.
Полезный порядок из гайда:
сначала SQL и HTTP, потом locks и channels, и только после этого CPU profiling.
Потому что один лишний поход в базу обычно стоит дороже, чем сотни мелких оптимизаций внутри hot loop.
🔗
#Rust #Performance #Profiling #Tokio #Backend
Paweł Urbanek собрал очень практичный гайд по профилированию Rust, где оптимизации идут не по принципу «что интереснее», а по реальной отдаче.
Из кейсов:
N+1 SQL → 21 запрос превратили в один JOIN, функция ускорилась со 104 до 70 мкс.Три последовательных HTTP-вызова →
tokio::try_join!, итоговое время почти вдвое меньше.Неправильно настроенный Brotli в
maplibre/martin → скорость была всего 27,9 KB/s. Одна правка конфига дала примерно 57x ускорение, а latency упала до <9 мс.Ещё жёстче кейс с
write lock, который держали на всём HTTP round trip. После переноса блокировки P95 для читателей рухнул с 1,11 секунды до 9,42 мкс.И отдельная классика Tokio: unbounded channel молча накопил 73 сообщения, потому что consumer не успевал. Никакой ошибки, просто медленное движение к OOM.
Полезный порядок из гайда:
сначала SQL и HTTP, потом locks и channels, и только после этого CPU profiling.
Потому что один лишний поход в базу обычно стоит дороже, чем сотни мелких оптимизаций внутри hot loop.
🔗
hotpath.rs/blog/profiling-rust-guide#Rust #Performance #Profiling #Tokio #Backend
❤6🔥4👍3😱1