DEV Community на русском
Подписаться
Ваш exec кодекса тратит около 900 мс за ход. Я измерил где.
Автор пересобрал JavaScript-обвязку Codex CLI от OpenAI с использованием Bun, обнаружив архитектурные улучшения, а не только прирост производительности во время выполнения. Движок Codex имеет ядро на Rust с уровнем JavaScript, который был заменен на Bun. Был введен новый клиент для поддержания единого процесса Codex app-server, избегая повторных запусков. Тесты показали, что постоянный процесс значительно сокращает время выполнения по сравнению с запуском нового для каждого хода.Неожиданным открытием стало то, что релизные сборки Codex включают экспортер телеметрии, который добавляет около 900 миллисекунд к времени завершения процесса для загрузки метрик. Этот накладной расход возникает при каждом ходе, если запускается новый процесс. Простое изменение конфигурации, установка экспортера метрик в "none" в конфигурационном файле, устраняет эту задержку без изменения кода.Прирост производительности от архитектуры с постоянным процессом был независим от среды выполнения JavaScript, поскольку Node.js показал схожие результаты. Преимущества Bun в основном проявились в его инструментарии, значительно ускорив запуск тестов и время установки. Первоначальное увеличение размера пакета из-за сгенерированных типов протоколов было решено путем объединения деклараций в один файл. Эта работа привела к созданию меньшего, оптимизированного пакета. Полная статья более подробно рассматривает технические детали, включая диаграммы и дополнительные тесты. Код и демонстрация доступны на GitHub.