его потестировал в плане сборок. На моём проекте с 32 собственными зависимостями (что выливается в почти 900 транзитивных из-за гигантов типа tokio, sqlx и actix-web), на 4 ядрах 8 потоках 3.2ГГц, SSD SATAIII, 20гб RAM получил такие результаты
Дебаг:
ld debug - Finished dev [unoptimized + debuginfo] target(s) in 9m 54s
mold debug - Finished dev [unoptimized + debuginfo] target(s) in 4m 37s
rerun ld debug - Finished dev [unoptimized + debuginfo] target(s) in 10m 06s
rerun mold debug - Finished dev [unoptimized + debuginfo] target(s) in 4m 20s
С оптимизациями: (lto=fat, codegen-units=1)
ld - Finished release [optimized] target(s) in 10m 38s
mold - Finished release [optimized] target(s) in 7m 01s
Но у меня в проекте нет бенчмарков. Влияет ли линкер на оптимизации и производительность? Стоит ли заменять системный линкер другим для раста?
Да. GNU ld очень медленный и его стоит заменять, если нет специальных требований использовать только его. Самая популярная замена -- lld (LLVM ld)
Может ли случиться потеря производительности из-за смены линкера?
Маловероятно, если вообще возможно.
Обсуждают сегодня