Продолжение про мою версию OpenWhispr
Пока переписывал код с JS на TS, из репо openwhispr ко мне перекочевал github action 'pr-quality' – оно на каждый пуш в гитхаб запускает джобу, которая прогоняет все тесты и аудиты по всему репо. Полезно, но дорого.
В итоге, за несколько дней у меня впервые в жизни закончилась квота Github Actions. Отключил запуск тестов в gh actions и решил запускать их локально.
В один момент столкнулся с тем, что мак раскалился как сковородка, так что проишлось попросить codex сократить количество параллельных тестов и продолжил работать.
Спустя время заметил, что тесты занимают чудовищно много времени на один запуск - минут 17. А z.ai glm 5.3 flash, который переписывал код, любил запускать полный набор тестов после каждой мелочи!
Терпение кончилось и решил вместе с кодексом оптимизировать эти тесты.
Вот самые интересные чекпоинты того, как это происходило:
было 17:18 мин → стало 12:25 мин
- добавили кеш модулей для swift кода: 162 с → 4,6 с
- фальшивый ONNX worker не отвечал на завершение, поэтому 5 сценариев ждали настоящий таймаут: 25 → около 0,1 с.
- убрали лишнюю работу в двух проверках TypeScript-контрактов: 48 → 10,6 с.
- в тестах миграции настроек перестали после каждого сценария перезагружать весь граф Vite. Две дорогие группы сократились примерно с 30,6 до 4,3 с и с 17 до 3,9 с.
12:25 мин → 5:03 мин
- перенастроили запуск тестов - разделение по доменам, типам и условиям
- запуск тестов в два потока
- убрали проверки кода, который больше не используется.
- тесты, проверявшие скопированную в них логику, заменили проверками настоящего кода приложения.
- 57 проверок TypeScript-контрактов объединили в один запуск компилятора, вместо повторной компиляции для каждого файла.
- переиспользование запущенного vite server
Было 5:03 мин → стало 1:06 мин
- профилирование показало, что мы запускали с низким приоритетом не только тесты, но и сборку с компилятором. Раньше так пытались снизить нагрузку на Mac.
- убрали низкий приоритет: одна и та же сборка сократилась с 21,45 с до 2,90 с. Ограничение в два тестовых процесса сохранили.
- убрали ещё один лишний пятсекундный таймер и повторную подготовку нескольких тестов.
- полный прогон занял 60,43 с
Вывод такой – быстрая итерация для эффективной разработки очень сильно важна. И без агентов я бы скорее всего забил бы на эту оптимизацию, потому что это отняло бы у меня точно несколько рабочих дней
Лайк, репост,
✔️ Тимур Хахалев про AI Coding, подписывайтесь!
Post #439
1.59K
- 🔥 14
- ❤ 10
- 👍 1