cargo build 7 минут на воркспейсе из 60 крейтов — норма в 2026 или мы что-то делаем не так?
Рейтинг: 51% · 4 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
cargo build 7 минут на воркспейсе из 60 крейтов — норма в 2026 или мы что-то делаем не так?
Накипело. Воркспейс на ~60 крейтов: бэкенд на axum, sqlx, изрядно кодогенерации через proc-macro. Чистая сборка в CI — семь с лишним минут, инкрементальная после правки в core-крейте — секунд сорок, и это на M3 Pro. Коллеги на офисных машинах с 16 ГБ страдают заметно сильнее: rust-analyzer плюс rustc плюс докер — и своп. Rust 1.96, профили из коробки, ничего не тюнили. Подскажите по своему опыту: что из тюнинга реально работает, а что карго-культ?
✔ Лучший ответ сформирован автоматически — navspy
@corvet, Пройдусь по списку того, что внедряли у себя на воркспейсе сопоставимого размера (около 80 крейтов). Первое: cranelift-бэкенд для dev-сборок (на nightly, codegen-backend = "cranelift" в профиле) — минус 30-35% времени кодогена, качество машинного кода для локальной разработки неважно. Второе: параллельный фронтенд -Zthreads=8 — ещё минус 15-20%, тоже пока nightly. Третье: в…
- ansible1337
- Сообщения: 11
- Зарегистрирован: 17 май 2026, 04:17
Re: cargo build 7 минут на воркспейсе из 60 крейтов — норма в 2026 или мы что-то делаем не так?
Первым делом — линкер. На линуксе ставьте mold или wild (он сам на Rust написан и уже стабильнее, чем о нём принято думать): в .cargo/config.toml добавляете rustflags = ["-C", "link-arg=-fuse-ld=mold"] — у нас время инкрементальной линковки упало с 12 до 2 секунд. На macOS новый эппловский линкер и так быстрый, там профит скромнее.
Re: cargo build 7 минут на воркспейсе из 60 крейтов — норма в 2026 или мы что-то делаем не так?
✔ Лучший ответ — сформирован автоматически
@corvet, Пройдусь по списку того, что внедряли у себя на воркспейсе сопоставимого размера (около 80 крейтов). Первое: cranelift-бэкенд для dev-сборок (на nightly, codegen-backend = "cranelift" в профиле) — минус 30-35% времени кодогена, качество машинного кода для локальной разработки неважно. Второе: параллельный фронтенд -Zthreads=8 — ещё минус 15-20%, тоже пока nightly. Третье: в [profile.dev.package."*"] ставим opt-level = 2 — зависимости компилируются один раз, зато serde и сгенерированный sqlx-код перестают тормозить рантайм тестов. Четвёртое: sccache с кэшем в S3-совместимом хранилище (мы держим в Селектеле) — чистая сборка в CI ужалась с девяти минут до 2:40. И главное, с чего вообще стоит начать: cargo build --timings. У нас выяснилось, что половину критического пути держал один god-крейт с общими типами, который тянули все 80 — распилили его на три, и инкременталка ожила без всякой магии.
Re: cargo build 7 минут на воркспейсе из 60 крейтов — норма в 2026 или мы что-то делаем не так?
Сравнение с плюсами — низкая планка. Go собирает сопоставимый по объёму сервис за 15 секунд, и тоже, представьте, без сегфолтов. Боль реальная, и упирается она не только в build: rust-analyzer после ребейза переиндексирует наш воркспейс 3-4 минуты, на ноутбуке с 16 ГБ в это время жить нельзя. Из практичного: в цикле разработки забудьте про cargo build, живите на cargo check, а вместо cargo watch возьмите bacon — он умнее перезапускает проверки и не молотит вхолостую.
Re: cargo build 7 минут на воркспейсе из 60 крейтов — норма в 2026 или мы что-то делаем не так?
Семь минут чистой сборки — это вы избалованные, вообще-то. Я с плюсов пришёл: проект на CMake собирался 40 минут, и никто не ныл, наливали кофе и шли на стендап. Цена за то, что после успешной компиляции оно просто работает без сегфолтов и UB — честная.
Re: cargo build 7 минут на воркспейсе из 60 крейтов — норма в 2026 или мы что-то делаем не так?
Раз у вас sqlx — отдельно проверьте, что включён offline-режим: cargo sqlx prepare и каталог .sqlx закоммичен в репу. Иначе макросы на каждую пересборку ходят в живую базу, и эти походы отлично маскируются под «медленную компиляцию». Нам одно это срезало минуту с лишним.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Redis на noeviction разлогинивает половину юзеров под нагрузкой. Что делаем не так?
10 ответов · 882 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость